这个题目咋一看上去很简单清晰,就是多项式系数和指数轮换着输入,遇到系数0或者指数0停止
所以我刚开始的思路是:
1.因为不知道输入多少位,所以我干脆一输入直判断输出scanf("%d %d",n,x);
2.判断是不是零多项式n==0||x==0,输出格式0 0而不是0
3.判断是不是n!=0x=0 printf(" 0");
4.之后printf("%d %d",n*x,x-1)判断x-1为0 直接结束
5.但是第一次写的代码通不过第三个测试点,也就是系数和指数同时取上限的时候pta显示运行超时,我查了一下发现int表示不了100w的数,但我不知道怎么修改,改成double,直接编译错误,有人说应该写一个数组去装n*x,越搞越复杂,所以我最终还是在网上看到别人写的,就c又简洁又快,又get一个新知识啦!
这个是我第一次写的
#includeint main() { int n,k; int flag=1; scanf("%d %d",&n,&k); if(k==0||n==0)//判断零多项式; { printf("0 0"); } else { printf("%d %d",n*k,k-1); if(k-1==0)//输出遇0停止; flag=0; } if(flag==1) { while(k!=0&&n!=0)//保证输入数字不是 0 0 1 2 3....之类的 { scanf("%d %d",&n,&k); if(k==0&&n!=0) { printf(" 0");//输出遇0停止,一个数×0直接出0; break; } else if(k==0&&n==0) { printf(" 0 0");//防止中间插个零多项式; break; } else { printf(" %d %d",n*k,k-1); if(k-1==0) break; } } } return 0; }
以下是别人写的。。。。。。
#includeint main() { int n,x; int flag=1; while( scanf("%d %d",&n,&x)!=EOF)//从键盘上输入n,x,直到遇到eof; 我真不知道eof还可以用在这里??一般eof不都是c语言的文本文件结束符?? while的意思就是说当当前输入缓存还有东西时就一直读取,直到输入缓存中的内容为空时停止; 用于判断不知道有多少输入的时候特别好用; { if(x!=0) { if(flag) { printf("%d %d",n*x,x-1); flag=0;//判断是否已经输出过,注意格式; } else printf(" %d %d",n*x,x-1); } } if(flag) { printf("0 0");//无输出的时候,要输出0 0 } return 0; }



