import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String A = in.next();
int B = in.nextInt();
StringBuilder Q = new StringBuilder();
int r = 0;
for(int i = 0;i<A.length();i++){
int num = r*10+A.charAt(i)-'0';
int result = 0;
if(num>=B||i+1==A.length()){
result = num/B;
r = num%B;
}else{
if(i!=0)
Q.append(0);
num = num*10+A.charAt(++i)-'0';
result = num/B;
r = num%B;
}
Q.append(result);
}
System.out.println(Q.toString()+" "+r);
}
}
static void Main(string[] args)
{
string line = null;
/*基本思想是把除法转换为求商过程的逆转,比如 100/2 等价于 1/2 商为0,余数为1,商为0的情况下不能输输出, 然后余数和下一位 即0 组合为1*10+0=10,就变成10/2 商为5余数为0,此时输出商数。然后0和下一位0组合为0*10+0=0 0/2余数为0,
此时运算完毕 */
while ((line = Console.ReadLine()) != null)
{
int quotient = 0;//商数
int remainder = 0;//余数
string[] tokens = line.Split();
string a = tokens[0];
int b = int.Parse(tokens[1]);
for (int i = 0; i < a.Length; i++)
{
remainder = remainder * 10 + a[i] - 48;
if (remainder >= b)
{
Console.Write(remainder / b);
quotient = 1;
}
else if (quotient == 1)
Console.Write(0);
remainder = remainder % b;
}
if (quotient == 0)
Console.Write(0);
Console.Write(" " + remainder);
}
}
#include<iostream>#include<string>using namespace std;//PAT乙级真题A除以B (20)intmain(){string A,Q;intB,R;cin>>A>>B;intlength = A.length();//special case A<Bif(length==1&& (A[0]-'0')<B)cout<<"0 "<<A[0]-'0';//normal case caculate the divide by using the stringinti,tmp = A[0]-'0';if(tmp>B)//the first bitQ.push_back(tmp/B+'0');for(i=1;i<length;i++){R = tmp%B;tmp = R*10+(A[i]-'0');Q.push_back(tmp/B+'0');}R = tmp%B;cout<<Q<<" "<<R;}
#include<iostream>
using namespace std;
int main()
{
string s;
cin>>s;
int n;
cin>>n;
int len = s.size();
int t = 0;
for(int i = 0; i < len; i++)
{
t = t*10 + s[i] - '0';
if(t >= n)
{
cout<<t/n;
t = t-n*(t/n);
}
else if(i != 0)
{
cout<<"0";
}
}
cout<<" "<<t;
} #include<iostream>
#include<string>
using namespace std;
int main(){
string stra;
int b;
cin >> stra >> b;
int mode=0;
for(int i=0;i<stra.size();i++){
//从高位到低位计算每一位除法所得结果
int temp = stra[i] - '0' + 10 * mode;
//避免第一位所得为0
if(i==0 && temp/b == 0) mode = temp;
else {
cout << temp/b;
mode = temp % b;
}
}
cout << " " <<mode;
return 0;
}
#include<iostream>
using namespace std;
int main()
{
string a;
int b;
cin>>a>>b;
int len=a.length();
//做除法是从高位开始计算
int t=0;
string res;
for(int i=0;i<len;i++){
int x=a[i]-'0';
t=t*10+x;
if(i!=0||t/b!=0)
res+=to_string(t/b);
t%=b;
}
cout<<res<<" "<<t;
return 0;
} 0 R;商的第一位为0不用输出。/*
* app=PAT-Basic lang=c++
* https://pintia.cn/problem-sets/994805260223102976/problems/994805305181847552
*/
#include <cstdio>
#include <cstring>
using namespace std;
const int maxn = 1010;
int A[maxn] = {};
int Q[maxn] = {};
int main()
{
int B, R = 0;
char ch[1010];
scanf("%s%d",ch,&B);
int len = strlen(ch);
for (int i = 0; i < len; i++){
A[i] = ch[i] - '0';
}
int j = 0;
for (int i = 0; i < len; i++){
R *= 10;
R += A[i];
Q[j++] = R / B;
R %= B;
}
if (j == 1 && Q[j] == 0){
printf("0 %d",R);
return 0;
}
bool flag = false;
for (int i = 0; i < j; i++){
if (!flag && Q[i] == 0){
continue;
}
else{
printf("%d", Q[i]);
flag = true;
}
}
printf(" %d",R);
return 0;
} // ConsoleApplication1.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//
#pragma warning(disable:4996);
#include <iostream>
#include<stdio.h>
#include<algorithm>
#include<string.h>
#include<stack>
using namespace std;
int main()
{
char a[1005];
int b;
cin >> a >> b;
int len = strlen(a);
int c = 10;//权值;
int ans = 0;//保存前一位留下的数,用作后面的除法
char q[1000];
int t = 0;//用来存放商
int x;//用来记录每次读取的数;
if (strcmp(a, "0") == 0) cout << "0";//除数为0
for (int i = 0;i < len;i++)
{
x = a[i] - '0';
ans += x;
if(i!=0||(i==0&& (ans/b)!=0)) q[t++] = (ans/b) + '0';
if (ans % b == 0) { ans = 0;continue; }
else {
ans = (ans % b) * c;
}
}
for (int i = 0;i < t;i++) cout << q[i];
cout << " " << ans/c;
return 0;
}
//123456789050987654321 7
//17636684150141093474 3
#include<iostream>
#include<sstream>
#include<cstring>
using namespace std;
int main()
{
int k;//一位
int tmp;
string s;
string str;
string chu="";
char yu;
cin>>s;cin>>k;
if(s.size()<=2)
{
stringstream ss;
ss<<s;
ss>>tmp;
cout<<tmp/k<<tmp%k<<endl;
return 0;
}
int i;
if(s[0]<k+'0')
{
str=s.substr(0,2);
i=2;
}
else
{
str=s[0];
i=1;
}
for(;i<=s.size();)
{
stringstream ss;
ss<<str;
ss>>tmp;
chu+=(tmp/k)+'0';
yu=(tmp%k)+'0';
//cout<<yu<<endl;
str=yu;
str+=s[i];
i++;
}
cout<<chu<<' '<<yu<<endl;
} 很坑的一点是,牛客的C++编译器不认识<String>头文件,只认识<string>头文件,导致提交错了两次。
#include <iostream>
#include <string>
using namespace std;
int main(){ string dividends = " ", ans = ""; int divisor = 1, length = 0, subDividends = 0; int i = 0; cin >> dividends >> divisor; length = dividends.length(); int *array = new int[length]; for(i = 0;i < length;i++){ array[i] = dividends[i]-'0'; } int quotient = 0, remainder = 0; for(i = 0;i < length;i++){ subDividends = remainder*10 + array[i]; quotient = subDividends/divisor; if(!(i==0&"ient==0)) ans += quotient + '0'; remainder = subDividends%divisor; } cout << ans << " " << remainder <<endl; delete array; return 0;
}
//用正常的手算步骤代码跑一遍就可以啦
#include<iostream>
using namespace std;
int main()
{
string A;
int B,Y = 0;//Y为余数
cin >> A >> B;
int temp = 10*(A[0]-'0')+(A[1]-'0');//先用前两位去除
for(int i = 0; i < A.size()-1; i++)
{
int S = temp/B;//S为商
Y = temp%B;//Y为余数
temp = 10*Y + (A[i+2]-'0');//temp看演算纸
cout << S;
}
cout << " " << Y;
return 0;
}
#coding=utf-8
s=raw_input()
a,b=s.split(" ")
b=int(b)
ans=[]
flag=0
for i in a:
if (int(i)+flag*10)/int(b)<1:
ans.append( str((flag*10+int(i))/b) ) #商0
flag=int(i)
#print "1flag %d"%flag
else:
#print "2flag %s"%str((flag*10+int(i))/b)
ans.append( str((flag*10+int(i))/b) )
flag = (flag*10+int(i))%b
if ans[0]=="0":
print "".join(ans)[1:]
else:
print "".join(ans)
print flag
#include <iostream> #include <cstdio> #include <cstring> using namespace std; class BigNum { public: int number[1005]; int len; BigNum() { len = 0; memset(number, 0, sizeof(number)); } void in() { char t = '0'; while (t) { t = (char) getchar(); if (t == ' ' || t == '\n') break; number[len] = t - '0'; len++; } } void out() { bool flag = false; for (int i = 0; i < len; ++i) { if (number[i] != '0' && number[i] != 0)//从左边第一个不为0的数开始输出 flag = true; if (flag) printf("%d", number[i]); } } //返回余数 int chu(int num, BigNum &b) { int n, mod = 0; for (int i = 0; i < len; ++i) { n = number[i] + mod * 10; b.number[i] = n / num; mod = n % num; } b.len = len; return mod; } }; int main() { int n,q; BigNum a = BigNum(); BigNum b = BigNum(); a.in(); cin >> n; q = a.chu(n, b); b.out(); cout << " " << q; return 0; }
#include<iostream>
#include<string>
using namespace std;
int main()
{
string a, c = "";
int b, temp, remain = 0;
cin >> a >> b;
for (int i = 0; i < a.size(); i++)
{
temp = int(a[i] - '0') + remain * 10;
remain = temp % b;
if (i == 0 && temp / b == 0)
continue;
c.append(1, char(temp / b + 48));
}
cout << c << " " << remain << endl;
return 0;
}