北大算法试卷
⑴ 用北大算法算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