关于ACM题中的输入输出问题及计算机专业学习的若干困惑

来源:百度知道 编辑:UC知道 时间:2024/06/10 21:40:39
这是题目:
***接到一个任务要求统计一堆数据的冲突问题:
已知一个数n,所谓冲突问题就是在小于n的数中与n的最大公约数为1的数.
现在***的任务就是已知一个数n统计存在多少这样冲突 即GCD(n,k)=1 (0<k<n),满足这样k的个数.
现在已知n=pk,p是一个素数,k是一个正整数。
Input
每行输入两个整数
p k (0<p<100, 0<k<50)其中p为素数;
Output
输出与n的冲突数目
Sample Input
5 2 7 3 2 1
Sample Output
20 294 1
这是我陋陋的代码~
#include<stdio.h>
#include<math.h>
int GCD(int m,int n)/*判断最大公约数*/
{
int temp=0;
temp=m%n;
if(temp==0)
return n;
else
{
m=n;
n=temp;
GCD(m,n);
}
}
void main()
{
int i,j,p,k,count;
unsigned long int n;
scanf("%d%d",&p,&k);
while(p!=0&&k!=0)/*p与k为零时结束程序*/
{
n=0;
count=0;
while(!(p<100&&0<k<50&&p>k))
{
scanf("%d%d",&p,&k);
}
n=pow(p,k);
for(i=1;i<n;i++)
if(GCD(n,i)==1)
count++;

1.大部分情况使用int就好了,32位的数字。
2.题目的意思表示保证p为素数,所以无须验证。
3.presentation error表示输出格式错误。具体错误请查询OJ系统的FAQ,里面会有详细的介绍。
4.acm主要是锻炼一个人的编程能力、算法设计能力、调试能力,而做实例更多的是软件工程方面的,如何对待具体看个人兴趣。时间并不是问题,大学生最不缺的就是时间,关键是看您如何去使用。

补充.做ACM是需要一个长期的过程,一般做200道题目才能有略微的见效,不过当你做到500道题目1000道题目后,你就会知道你的辛苦是值得的。

Compile Error 编译错误
Run Time Error 运行时间错误
Time Limit Exceeded 运行超时
Wrong Answer 错误答案
Presentation Error 介绍错误
Accepted 正确