题目是pat乙级
思路:题目初看是高精度算法,实际上不需要。由于除数是1位,因此可以边读边除。需要注意的是:如果只有1位,且小于除数,需要单独处理
训练目的:数的进制问题
思路:题目初看是高精度算法,实际上不需要。由于除数是1位,因此可以边读边除。需要注意的是:如果只有1位,且小于除数,需要单独处理
训练目的:数的进制问题
题目描述
本题要求计算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> using namespace std; int main() { int b; char s[1100]; while(cin>>s>>b) { int x=0; if(s[1]=='\0') { int t=s[0]-'0'; cout<<t/b<<" "<<t%b<<endl; } else if(s[2]=='\0') { int t=(s[0]-'0')*10+s[1]-'0'; cout<<t/b<<" "<<t%b<<endl; } else { int t=(s[0]-'0')*10+s[1]-'0'; cout<<t/b; t%=b; for(int i=2;s[i];i++) { t=t*10+s[i]-'0'; cout<<t/b; t%=b; } cout<<" "<<t<<endl; } } return 0; }