A题(最大公因子):
即求两个数n,m的最大公约数,主题代码如下:
do{
r=m%n;
m=n;
n=r;
}while(r);
m即为所求的最大公因子,需要注意的是,输入的n和m的值的大小。
B题(童年生活二三事):
找规律,然后打表:
for(i=3;i<=41;i++)
a[i]=a[i-1]+a[i-2];
C题(母牛的故事):
运用斐波那契原理,第一头母牛每年都会生一头,出生的小牛到第四年开始,每年都会生出一头小牛,依照这个规律进行打表就可以了。
注意:当年牛的数量是前一年的数量加上三年前的牛的数量,即a[i] = a[i-1] + a[i-3]。
D题(手机短号):
先定义一个12位的字符串,然后以字符串形式读取输入数据,先输出一个“6”,然后输出字符串后五位即可。
E题(素数判定):
对x,y之间的数进行逐个判断,如果出现非素数,则跳出循环,输出sorry,否则输出ok。
素数判定参考函数:
int comp(int n)
{
int i,flag=1;
for (i=2;i<=sqrt(n);i++)
if (n%i==0)
{
flag=0;
break;
}
if (flag==1) return 1;
else return 0;
}
F题(阿基米德特性):
此题有些同学可能用循环去做,这样会导致超时,其实只要求出b除以a的值,然后加1就行了(int k=m/n+1;)。
注意:此题只有一组输入数据。
G题(Elevator):
输入以0结束:while(scanf("%d",&n),n)。对于输入的一组数据,依次进行处理,后面一个和前面的比较,大的就是上升,时间加楼层差乘以6,下降为楼层差乘以4,每次循环均加上5就可以了。
H题(GG 和MM):
通过两点坐标和半径求出弧长(较短的那段),然后就是已知路程和速度求时间的简单计算题(输出保留一位小数)。建议所有数据直接用double类型,呵呵。
I题(GG's Single Day):
瑞年的判断,定义一个变量r=3。碰到闰年加2,平年加1。
注意:闰年有一个规律是400年一个循环的。用这个条件优化,不然会超时。
J题(判断闰年):
即判断能被400整除,或者能被4整除但是不能被100整除的数。
K题(平均数和标准差):
求平均数时要注意:输入的是整形的数,求平均数时应该除以5.0;或者输入的时候直接把数定义为double类型。
H题(求两直线的夹角):
用向量做,设向量A,B,则A*B=|A|*|B|*cos(p)(p为夹角),然后用反三角函数求夹角。
注意:上面求出来的是弧度值,要转换成角度值,π最好定义为acos(-1),这样精度高。