1007
题目:本题要求计算A/B,其中A是不超过1000位的正整数,B是1位正整数。你需要输出商数Q和余数R,使得A = B * Q + R成立
思路:对于数字元素拆分,除法的计算方法用代码实现(唯一一点就是在输出的时候首元素按照输出的格式是不能有0的情况存在)
以下是我初次通过本地测试成功的代码,但是在上传到牛客的时候出现,实际结果没有输出q数组,我就很奇怪,我使用了相同测试用例到本地没有问题,但是在网上就是通过不了。
#include<iostream>
#include<cstdio>
#include<string>
using namespace std;int main() {string str;int n,len;freopen("i.txt","r",stdin);char q[1001];cin>>str>>n;int mode=0;for(int i=0; i<str.length(); i++) {mode=mode*10+((int)str[i]-'0');q[i]=(char)mode/n+'0';mode%=n;len++;}for(int i=0; i<len; i++) {if(i==0&&q[i]=='0') {continue;}printf("%c",q[i]);}printf(" %d",mode);return 0;
}
参考代码:
#include<iostream>
#include<string>
using namespace std;
int main(){string a;int b;cin>>a>>b;int yu = a[0] - '0';for(int i = 1;i<a.size();i++){int tem = yu*10+ (a[i] - '0');cout<<tem/b;//输出结果yu = tem %b;}cout<<" "<<yu;//输出结果return 0;
}
然后就学会了:以后在获取到结果的时候,能通过使用for循环输出结果。这样就又省了一次for循环,减少代码运行的时间
改进代码:(以下代码就能顺利通过测试用例)
#include<iostream>
#include<cstdio>
#include<string>
using namespace std;int main() {string str;int n,len;// freopen("i.txt","r",stdin);char q[1001];cin>>str>>n;int mode=0;for(int i=0; i<str.length(); i++) {mode=mode*10+((int)str[i]-'0');q[i]=(char)mode/n+'0';mode%=n;if(i==0&&q[i]=='0') {continue;}printf("%c",q[i]);}printf(" %d",mode);return 0;
}
总结
1.使用for循环顺手输出结果
2.字符转数字是使用了字符数字与字符数字‘0’的差值获取了整型数字
3.使用取余数的方式可以获取一串数字里面的元素。
1009
简单,但是麻烦
题目:
给定任一个各位数字不完全相同的4位正整数,如果我们先把4个数字按非递增排序,再按非递减排序,然后用第1个数字减第2个数字,将得到一个新的数字。一直重复这样做,我们很快会停在有“数字黑洞”之称的6174,这个神奇的数字也叫Kaprekar常数。例如,我们从6767开始,将得到7766 - 6677 = 10899810 - 0189 = 96219621 - 1269 = 83528532 - 2358 = 61747641 - 1467 = 6174... ...现给定任意4位正整数,请编写程序演示到达黑洞的过程。
#include<iostream>
#include<cstdio>
#include<algorithm>using namespace std;
bool cmp(int a,int b) {return a>b;
}int main() {// freopen("in.txt","r",stdin);int num;cin>>num;do{int n[4];for(int i=3; i>=0; i--) {n[i]=num%10;num=num/10;}sort(n,n+4,cmp);printf("%d%d%d%d - %d%d%d%d = ",n[0],n[1],n[2],n[3],n[3],n[2],n[1],n[0]);num=(n[0]*1000+n[1]*100+n[2]*10+n[3])-(n[3]*1000+n[2]*100+n[1]*10+n[0]);printf("%d\n",num); }while(num!=6174);return 0;
}
总结
尽量观察输出结果与获取的输入之间的连接,能少写代码就少写