杭电oj,杭电oj进不去
杭电OJ题目2034,我的答案正确却总是wrong answer
对于acm的题目,我觉得如果在自己的电脑上运行对了,提交错误,怎么找出来错误,第一,反复读题目,看自己的程序中都满足题目中的要求没有,有时候输出的形式也要注意一下,有可能是要你把所有需要输入的数据都输进去,然后在吧所有输入的处理后再输出,有可能也是输入一个就处理一个,这样的情况也有的,需要注意下,再就是定义的数组范围,也是一个容易出错的,这些是我做题发现的一些,一般提交错误,大多数情况还是算法的问题,因为在检查你的程序的时候,是很多数据,而且边界条件也要满足,自己多测试下,看看算法对不对,自己喜欢它,就坚持下去。
杭电的输入要判断文件结束.详见杭电acm主页第一栏F.A.Q
P.S.新用一个OJ时最好先读一遍它的FAQ,了解它的提交规则,避免走许多弯路啊...
只能帮你到这儿了。
PS:昨天你采纳的就是我,你写的真的很复杂。只需要在第二个集合中寻找第一个集合中的元素判断是否输出就可以。
其实这种事情上面没必要坚持什么,你看到比自己写的好的代码就抄过来,放下原来自己觉得对但实际上没人认同的算法。才会进步啊。
杭电oj怎么查看题目答案
在网上查。
1.首先,打开百度,输入“杭电OJ”进行搜索。
2.然后进入杭电OJ官网,进行注册。
3.输入注册信息。
4.接下来进入详细注册界面,将信息填写完整后点击Submit。
5.接下来即可登录帐号,填写用户名和密码后 点击Signin。
6.接下来,进入刷题界面。
7.英文题自行翻译,从11页开始有中文题,无论中英完成后都计入刷题数。
8.做题时一定要仔细看题,积极尝试。
9. 选择答题语言为C语言,并将代码粘贴到答题界面。
10. 接下来就可以看答案是否正确了。
杭电OJ 2028题笔记
题目链接: problem.php?pid=2028
这种题最直接的方法就是
穷举法
#includestdio.h
void main()
{
? ? int n,min,i,m,a[100];
? ? while(scanf("%d",n)!=EOF)
? ? {
? ? ? ? for(i=0;in;i++)
? ? ? ? {
? ? ? ? ? ? scanf("%d",a[i]);
? ? ? ? }
? ? ? ? min=a[0];//可以减去一次循环
? ? ? ? for(i=1;in;i++)
? ? ? ? {
? ? ? ? ? ? for(m=min;;m++)
? ? ? ? ? ? {
? ? ? ? ? ? if(m%a[i]==0m%min==0)break;//判断为最小公倍数的条件
? ? ? ? ? ? }
? ? ? ? ? ? min=m;//每次循环的最小公倍数
? ? ? ? }
? ? ? ? printf("%d\n",m);
? ? }
}
若求最大公约数则
#includestdio.h
void main()
{
? ? int n,min,i,m,a[100];
? ? while(scanf("%d",n)!=EOF)
? ? {
? ? ? ? for(i=0;in;i++)
? ? ? ? {
? ? ? ? ? ? scanf("%d",a[i]);
? ? ? ? }
? ? ? ? min=a[0];//可以减去一次循环
? ? ? ? for(i=1;in;i++)
? ? ? ? {
? ? ? ? ? ? for(m=min;;m--)
? ? ? ? ? ? {
? ? ? ? ? ? if(a[i]%m==0min%m==0)break;//判断为最大公约数的条件
? ? ? ? ? ? }
? ? ? ? ? ? min=m;//每次循环的最大公约数
? ? ? ? }
? ? ? ? printf("%d\n",m);
? ? }
}
第二种辗转相除法(用于求两数的最大公约数和最小公倍数)
方法如下
int s(int a,int b)//辗转相除法
{
? ? int f,t;
? ? int p = a,k = b;
? ? if(ab)
? ? {
? ? ? ? t=a;
? ? ? ? a=b;
? ? ? ? b=t;
? ? }
? ? while(b!=0)
? ? {
? ? ? ? f=a%b;
? ? ? ? a=b;
? ? ? ? b=f;
? ? }
? ?// printf("%d",a);//a为所得最大公约数
? ? return p/a*k;//最小公倍数=两数之积/最大公约数
}