北大演算法試卷
⑴ 用北大演算法算GPA,除了給出的幾個分數有對應的績點,中間的其他分數呢,如84分對應多少績點
成績 績點 成績 績點 成績 績點 成績 績點 成績 績點 成績 績點
60 1 61 1.15 62 1.29 63 1.43 64 1.57 65 1.7
66 1.83 67 1.96 68 2.08 69 2.2 70 2.31 71 2.42
72 2.53 73 2.63 74 2.73 75 2.83 76 2.92 77 3.01
78 3.09 79 3.17 80 3.25 81 3.32 82 3.39 83 3.46
84 3.52 85 3.58 86 3.63 87 3.68 88 3.73 89 3.77
90 3.81 91 3.85 92 3.88 93 3.91 94 3.93 95 3.95
96 3.97 97 3.98 98 3.99 99 4 100 4
若以欄位計算成績(優秀,良好,及格和不及格屬於同一評定標准; 合格與不合格屬於同一評定標准):
if(成績="優秀") then 績點=4
elseif (成績="良好") then 績點=3
elseif (成績=「及格」) then 績點=1
elseif (成績="不及格") then 績點=0
if (成績="合格") then 績點=4
elseif (成績="不合格") then 績點=0
註:對於07級及之後年級,考察課程(判斷標准:除了體育課之外給予「合格」評價的課程)成績不列入GPA統計。
學分績點的計算:�
1.一門課程的學分績點=績點×學分數�
2.學年或總評學習績點=所學課程學分績點之和÷所學課程學分之和
例如,兩門課學分分別為2和3,績點分別為3.7和4.0,
那麼平均績點為(3.7*2+3*4.0)/(2+3)。
⑵ 北大ACM1002題
while(cin >> b)
{
if(b != '\n') //這句話好像沒起到作用
你換成這樣:
while(b = _getch())
{
if(b != '\r')
⑶ 北大ACM題庫1061題,我怎麼老是Time Limit Exceeded
正確的演算法就是輾轉相除法求最大公因子。注意這里數字比較大,所以應該使用64位整數。輾轉相除法,即擴展歐幾里德演算法(Extended Euclidean algorithm),上網找找,或去看數學書。
⑷ 北大ACM2509題這樣做為什麼不對為什麼總是 Output Limit Exceeded 求高手指正
這樣就不OLE了。不過演算法是錯的。所以WA
#include <stdio.h>
int sum(int n,int k);
int main()
{
int n,k,s;
while(scanf("%d%d",&n,&k)==2)
{
s=sum(n,k);
printf("%d\n",s);
}
}
int sum(int n,int k)
{
if(n/k==0)
return n;
else
return(n+sum(n/k,k));
}
// 正確解法
#include <stdio.h>
int main()
{
int n,k,s,t;
while(scanf("%d%d",&n,&k)==2)
{
s=n;
t=n;
while(t>=k)
{
s+=t/k;
t = t - t/k*(k-1);
}
printf("%d\n",s);
}
}
⑸ 北大acm第1003道
你的代碼從主函數開始就不符合POJ規范,這份代碼可以AC,希望對你有幫助。
#include<stdio.h>
int main()
{
double c,cc;
int n,i;
while(scanf("%lf",&c) && c>1e-3)
{
cc = 0;
for (i = 0; cc < c; i++, cc += 1.0/(i+1));
printf("%d card(s)\n",i);
}
return 0;
}
⑹ 北大acm1091演算法:跳騷問題
找出M中除1和M本身的質數 , 結果為 M^N - ( M / 質數) ^N - ( M / 質數) ^N - .... ( M / 質數) ^N
其中 「質數」為所有質數中的一個, 要從M^N 依次減掉每一個質數的 ( M / 質數) ^N