本题要求计算A/B,其中A是不超过1000位的正整数,B是1位正整数。你需要输出商数Q和余数R,使得A = B * Q + R成立。
输入格式:
输入在1行中依次给出A和B,中间以1空格分隔。
输出格式:
在1行中依次输出Q和R,中间以1空格分隔。
输入样例:
1 |
123456789050987654321 7 |
输出样例:
1 |
17636684150141093474 3 |
注意数字首位首位不能为零。
代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
#include<stdio.h> int main() { char a[1001],*pa=a,temp[3],q[1001],*pq=q; int b,r=0,num; scanf("%s%d",a,&b); while(*pa) { temp[0]=r+'0'; temp[1]=*pa; temp[2]='\0'; sscanf(temp,"%d",&num); *(pq++)=num/b+'0'; r=num%b; pa++; } *pq='\0'; if(q[0]=='0'&&q[1]=='\0'||q[0]!='0') pq=q; else pq=q+1; printf("%s %d",pq,r); } |
编译不通过啊亲
额……我疏忽了,之前用的 CKEditor 作为编辑器 + syntaxhighlighter 实现高亮,导致 '\0'间的\0被吞掉了……
多谢指出,已修正……
(我的 GitHub Repo 里也有完整的源码……这个绝对没问题,除非测试点改动了