A除以B问题

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

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

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

input:123456789050987654321 7

output:17636684150141093474 3

分析:由于A可能为一千位所以不能用int,long int。。之类来存储,必须使用数组。然后根据除法规则,一位一位去除,再用一个数组存商。

 1 #include<iostream>
 2 #include<vector>
 3 #include<string>
 4 using namespace std;
 5
 6 int main()
 7 {
 8     string a;
 9     int b;
10     cin >> a >> b;
11     vector<int> out;
12     int divisor=0;//for循环中单次除法的除数
13     //计算商
14     for (int i = 0; i < a.size(); i++)
15     {
16         divisor =divisor*10+ (a[i]-‘0‘);
17         if ((divisor < b)&&(i==0))
18             continue;
19         if (divisor < b)
20             out.push_back(0);
21         else{
22             out.push_back(divisor / b);
23             divisor = divisor%b;
24         }
25     }
26     for (int i = 0; i < out.size(); i++)
27         cout << out[i];
28     cout << " " << divisor;
29     system("pause");
30     return 0;
31 }

PS:被除数只有一位故比较简单,有兴趣可以想想如果被除数位数不定如何解决。

时间: 2024-10-10 09:35:07

A除以B问题的相关文章

团体程序设计天梯赛 L2-018. 多项式A除以B(模拟)

题意:给你A,B两个多项式,问你A/B的值:注意多项式给你的是每个式子的指数与系数:保留到一位小数,如果出现系数为0(保留后也是)的情况,请不要输出它,如果没有非系数为0的情况就输出特殊 题解:多项式类似于"a*x^4+b*x^3+c*x^2+d*x^1+e*x^0"的形式,两个多项式除法就是模拟除法做 现在被除数最大指数的系数.被 除数最大指数的系数除以.结果就是商的系数,两个指数的差就是商的指数 然后枚举除数每一位乘以这个值来被 被除数减去,最后找被除数后一个位置继续循环,直到被除

PAT乙级 1017. A除以B (20)

1017. A除以B (20) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 本题要求计算A/B,其中A是不超过1000位的正整数,B是1位正整数.你需要输出商数Q和余数R,使得A = B * Q + R成立. 输入格式: 输入在1行中依次给出A和B,中间以1空格分隔. 输出格式: 在1行中依次输出Q和R,中间以1空格分隔. 输入样例: 123456789050987654321 7 输出样例: 176366

PAT 乙级 1017 A除以B (20) C++版

1017. A除以B (20) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 本题要求计算A/B,其中A是不超过1000位的正整数,B是1位正整数.你需要输出商数Q和余数R,使得A = B * Q + R成立. 输入格式: 输入在1行中依次给出A和B,中间以1空格分隔. 输出格式: 在1行中依次输出Q和R,中间以1空格分隔. 输入样例: 123456789050987654321 7 输出样例: 176366

20161127 输入两个自然数a、b,求a除以b的结果(保留两位小数)

题目: 输入两个自然数a.b,求a除以b的结果(保留两位小数). 代码: 1 program work20161127; 2 var 3 a,b,c:real; 4 BEGIN 5 readln(a,b); 6 c:=a/b; 7 writeln('c=',c:0:2); 8 END.

关于除以2的n次方求余数的思考

本人由于刚接触编程不久,思考的问题没有大家的那么深入.这次我仅仅只是一点基于学习的思考.今天在家里复习学校学过的功课,关于运算操作符的那一章节.  编写一个程序:从界面输入一个整数,要求求该数除以8后的余数.这个题目确实很简单,只要用%运算即可.但是我写出代码后发现编译器对于负数求模运算后所得的余数是负数.当然大家很容易想到此时加上除数即可达到题目的要求.我想这个代码大都会写,我就不再细述,但是今天我想输得方法并不是此.一个整型(int)占4个字节,每个字节8位.那么每个int占32个位.如果我

1017. A除以B (20)(此题转载)

1017. A除以B (20) 本题要求计算A/B,其中A是不超过1000位的正整数,B是1位正整数.你需要输出商数Q和余数R,使得A = B * Q + R成立. 输入格式: 输入在1行中依次给出A和B,中间以1空格分隔. 输出格式: 在1行中依次输出Q和R,中间以1空格分隔. 输入样例: 123456789050987654321 7 输出样例: 17636684150141093474 3 思路:解决手工除法的步骤,对字符串进行处理 #include <iostream> #includ

右移代替除以 2 的幂

当是正数时,没有问题. 但当是负数时,对于不需要舍入刚好整除的情况,结果是正确的.但是当需要舍入时,移位导致结果向下舍入,而不是像规则需要的那样向零舍入.例如,- 7/2应该得到- 3,而不是- 4. 利用规律:对于整数x和任意y > 0,有 「x/y = (x + y- 1)/y」.「 向上舍入 ,」向下舍入 假设x=ky+r, 这里0≤r<y,得到(x+y- 1)/y=k+(r+y- 1)/y,因此 (x+y- 1)/y」=k+ (r+y- 1)/y」.当r=0 时,后面一项等于 0,而当

1021: A除以B

1021: A除以B 时间限制: 1 Sec  内存限制: 128 MB提交: 263  解决: 189[提交][状态][讨论版] 题目描述 本题要求计算A/B,其中A是不超过1000位的正整数,B是1位正整数.你需要输出商数Q和余数R,使得A = B * Q + R成立. 输入 输入在1行中依次给出A和B,中间以1空格分隔. 输出 在1行中依次输出Q和R,中间以1空格分隔. 样例输入 123456789050987654321 7 样例输出 17636684150141093474 3 提示

为什么全表扫描成本(COST)公式里面要除以sreadtim

全表扫描的成本计算公式 如下: Cost = ( #SRds * sreadtim + #MRds * mreadtim + CPUCycles / cpuspeed ) / sreadtim 全表扫描的时候,单块读次数=0,#SRds表示单块读次数.全表扫描的成本里面,CPU消耗其实非常少,可以忽略不计,所以全表扫描的公式可以改写为: Cost = #MRds * mreadtim / sreadtim #MRds 表示多块读io次数 mreadtim 表示一次多块读耗费时间 sreadtim

2013 到1 通过最小步数 到达1 2中运算 -1 或者除以2

d[n]=min(dp[n-1]+1,dp[n.2]): n为偶数 dp[n]=dp[n-1]+1; 答案为18 怎么通过计算求得答案? #include<iostream> using namespace std; int d[2014]; int min(int x,int y) { if(x>y) return y; else return x; } int main() { int n; cin>>n; memset(d,0,sizeof(d)); d[1]=0; d