1017 A除以B (20 分)(c语言)
生活随笔
收集整理的這篇文章主要介紹了
1017 A除以B (20 分)(c语言)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
本題要求計算?A/B,其中?A?是不超過 1000 位的正整數,B?是 1 位正整數。你需要輸出商數?Q?和余數?R,使得?A=B×Q+R?成立。
輸入格式:
輸入在一行中依次給出?A?和?B,中間以 1 空格分隔。
輸出格式:
在一行中依次輸出?Q?和?R,中間以 1 空格分隔。
輸入樣例:
123456789050987654321 7結尾無空行
輸出樣例:
17636684150141093474 3結尾無空行
#include <stdio.h> #include <string.h> int main(){char A[10000];int B;int R;int Q;int cnt=0,i=0;scanf("%s%d",A,&B);int length =strlen(A);R=(int)(A[0]-'0')%B;Q=(int)(A[0]-'0')/B;if(length==1 || (length > 1 && Q != 0) ){printf("%d",Q);}for(cnt=1;cnt<length;cnt++){R*=10;Q=(int)(R+A[cnt]-'0')/B;R=(int)(R+A[cnt]-'0')%B;printf("%d",Q);}printf(" %d",R);return 0; }簡單說一下,大概的思路其實就是余數*10,加上下一位,進行除法運算
我主要總結下為什么要將第一個數單獨先輸出來。
這里我的理由是因為這個算法的循環部分核心模擬的其實是余數*10的部分,而第一位數它是產生余數的位,它本身沒有余數,因此要把它放循環外面
我踩過的坑:
1。將輸出第一位的數的時候,我沒考慮到第一位有可能比除數小的情況,會有101/4這種情況,會導致第一位出現0其他位有數字的情況
總結
以上是生活随笔為你收集整理的1017 A除以B (20 分)(c语言)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 1015 德才论 (25 分)(c语言)
- 下一篇: 1018 锤子剪刀布 (20 分)