本文共 4107 字,大约阅读时间需要 13 分钟。
提示:以下是本篇文章正文内容,下面案例可供参考
#includeusing namespace std;int ab[5005];//存储这个大数的每一位,0-len 从个位到高位string a,b;//定义两个字符串来存储一个大数int main(){ cin>>a>>b;//输入这两个大数 int lena=a.size();//算出大数a的位数 int lenb=b.size();//算出大数b的位数 int len= max(lena,lenb);//两个数的最大数 if(lena>=lenb) { //用较大的大数加较小的大数 for (int i = 0; i < lena; ++i) { //将第一个数的每一位转换为int型数字,再存入数组 ab[i] = a[lena - 1 - i] - 48; } for (int i = 0; i < lenb; ++i) { //将第二个数的每一位转换为int型数字,与第一位的数字相加,再存入数组 ab[i]+= b[lenb - 1 - i] - 48; } } else{ for (int i = 0; i < lenb; ++i) { //将第一个数的每一位转换为int型数字,再存入数组 ab[i] = b[lenb - 1 - i] - 48; } for (int i = 0; i < lena; ++i) { //将第二个数的每一位转换为int型数字,与第一位的数字相加,再存入数组 ab[i]+= a[lena - 1 - i] - 48; } } for (int i = 0; i =10){ ab[i]-=10; ab[i+1]++; } } while(a[len]>0){ //判断最大位的上一位是否大于0,如果大于,位数就加 len++; } for(int i=len-1;i>=0;i--){ //最后从最高位开始输出 cout<
代码如下(示例):
#includeusing namespace std;int ab[5005];//存储这个大数的每一位,0-len 从个位到高位string a,b;//定义两个字符串来存储一个大数int main(){ cin>>a>>b;//输入这两个大数 int lena=a.size();//算出大数a的位数 int lenb=b.size();//算出大数b的位数 int len= max(lena,lenb);//两个数的最大数 if(lena>=lenb) { //用较大的大数减较小的大数 for (int i = 0; i < lena; ++i) { //将第一个数的每一位转换为int型数字,再存入数组 ab[i] = a[lena - 1 - i] - 48; } for (int i = 0; i < lenb; ++i) { //将第二个数的每一位转换为int型数字与第一位数字相减,再存入数组 ab[i]-= b[lenb - 1 - i] - 48; } } else{ for (int i = 0; i < lenb; ++i) { //将第一个数的每一位转换为int型数字,再存入数组 ab[i] = b[lenb - 1 - i] - 48; } for (int i = 0; i < lena; ++i) { //将第二个数的每一位转换为int型数字与第一位数字相减,再存入数组 ab[i]-= a[lena - 1 - i] - 48; } } for (int i = 0; i =0;i--){ //最后从最高位开始输出 cout<
代码如下(示例):
#include#include using namespace std;int a1[5005],b1[5005],c[5005];//存储这个大数的每一位,0-len 从个位到高位char a[5005],b[5005];//定义两个字符串来存储一个大数int main(){ cin>>a>>b;//输入这两个大数 int lena=strlen(a);//算出大数a的位数 int lenb=strlen(b);//算出大数b的位数 int len= lena+lenb;//两个数的最大数 for (int i = 1; i <=lena; ++i) { //将第一个数的每一位转换为int型数字,再存入数组 a1[i] = a[lena - i] - 48; } for (int i = 1; i <= lenb; ++i) { //将第二个数的每一位转换为int型数字与第一位数字相减,再存入数组 b1[i]= b[lenb - i] - 48; } for (int i = 1; i <=lena ; ++i) { for (int j = 1; j <= lenb; ++j) { c[i+j-1]+=a1[i]*b1[j];//相乘后的两个数加入c[] i位的数乘以j为的数,的位数在i+j-1位 } } for(int i=1;i 9){ //模拟乘法进位 c[i+1]+=c[i]/10; c[i]%=10; } } while(c[len]==0&&len>1) len--;//判断最高位的下一位是否为0,是的话,位数就减一 for(int i=len;i>=1;i--){ //最后从最高位开始输出 cout<
#include "iostream"using namespace std;int a[101],s[101];void cf(int x){ int jz=0;//进制 for (int i = 100; i >=0 ; --i) { a[i]=a[i]*x+jz;//每次乘了之后再加进制 jz=a[i]/10;//进制为超过10的数 a[i]%=10;//取余后为这个位置的数 }}void jf(){ int jz=0;//进制 for (int i = 0; i <=100 ; ++i) { s[i]+=a[i]+jz;//模拟加法进制 jz=s[i]/10; s[i]%=10; }}void sc(){ int w; for (int i = 0; i <=100 ; ++i) { if(s[i]!=0){ //找到第一个不为0的数 w=i; break; } } for(int i=w;i<=100;i++){ //从第一个不为0的数开始输出 cout<>n;//求n的阶乘之和 for (int i = 2; i <=n ; ++i) { cf(i);//先乘 jf();//再加 } sc();//输出 return 0;}
#includeusing namespace std;int a[10000];int main(){ int t,n,num; cin>>t; while(t--) { int i,j; for(i=1;i<=1010;i++) a[i]=0; a[1]=1; long long cnt=0; int p=1; cin>>n>>num; for(i=2;i<=n;i++) { int jw=0; for(j=1;j<=p;j++) { a[j]=a[j]*i+jw; jw=a[j]/10; a[j]%=10; } while(jw>0) { a[j]=jw%10; jw/=10; j++; } p=j-1; } for(int k=1;k<=p;k++) { if(a[k]==num) cnt++; } cout< <
转载地址:http://pbjki.baihongyu.com/