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