随笔 - 26  文章 - 0  评论 - 0  阅读 - 2555

1017 A除以B(C++)

一、问题描述:

本题要求计算 A/B,其中 A 是不超过 1000 位的正整数,B 是 1 位正整数。你需要输出商数 Q 和余数 R,使得 A=B×Q+R 成立。

输入格式:

输入在一行中依次给出 A 和 B,中间以 1 空格分隔。

输出格式:

在一行中依次输出 Q 和 R,中间以 1 空格分隔。

输入样例:

123456789050987654321 7

输出样例:

17636684150141093474 3

二、代码实现:

复制代码
 1 #include <iostream>
 2 #include <cstring>
 3 using namespace std;
 4 int main()
 5 {
 6     char a[1001];
 7     int str[1000]={0};//Q
 8     int b;
 9     cin>>a>>b;
10     int n=0,j=0;
11     int yu;//R
12     if(a[0]=='0')//被除数为0
13     {
14         cout<<"0"<<" "<<"0"<<endl;
15         return 0;
16     }
17     if(b==0)//除数为0
18     {
19         cout<<"0"<<" "<<a<<endl;
20         return 0;
21     }
22     for(int i=0;i<strlen(a);i++)
23     {
24         n=n*10+(a[i]-'0');
25         if(n>=b)
26         {
27             str[j++]=n/b;
28             n=n%b;
29             yu=n;
30         }
31         else if(n<b)
32         {
33             if(str[0]!=0)
34             {
35                 str[j++]=0;
36             }
37             else if(strlen(a)==1)//被除数为一位数,除数小于被除数
38             {
39                 yu=n;
40                 str[j++]=0;
41             }
42         }
43     }
44     for(int i=0;i<j;i++)
45     {
46         cout<<str[i];
47     }
48     cout<<" "<<yu<<endl;
49     return 0;
50 }
复制代码

 

posted on   轻挼草色  阅读(49)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示