目录
1001题
题目描述
输入输出格式
输入格式
输出格式
输入输出样例
输入样例#1:
输出样例#1:
头文件和数组等初始定义
第一个函数——converts
第二个函数——add
第三个函数——print
主函数部分
完整代码
1002题
题目描述
输入输出格式
输入格式
输出格式
输入输出样例
1002题完整代码
1001题
题目描述
输入两行,正整数x和y,输出x+y的值
注意:x,y<=10^200
输入输出格式
输入格式
输入文件名xplusy.in 输入两行正整数
输出格式
输出文件名xplusy.out 输出一个正整数
输入输出样例
输入样例#1:
10000000000000000000000 99999999999999999999999
输出样例#1:
109999999999999999999999
需要注意的是这里的x和y最高都可以达到10的200次方 很明显unsigned long long 完全不够用 毕竟已经是超高精度了
所以 我们就要用我们的究极大招——用数组储存数
这里的话要先定义头文件和数组等
头文件和数组等初始定义
#include<bits/stdc++.h>
#define SIZE 209
using namespace std;
int x[SIZE],y[SIZE];
所以 我们需要做三个函数
第一个函数——converts
void converts(int *a,string s){
int i,len=s.size();
for(i=0;i<len;i++) a[i]=s[len-i-1]-'0';
for(;i<SIZE;i++) a[i]=0;
}
第二个函数——add
我们进行的是a+=b的操作
但是注意 这里因为是数组 要逐位相加并进位
void add(){//a+=b
//逐位相加
for(int i=0;i<SIZE;i++){
x[i]=x[i]+y[i];
if(x[i]>=10){//进位
x[i+1]++;
x[i]-=10;
}
}
}
第三个函数——print
这个的话其实有没有无所谓 如果这道题要输出多个数的话 建议还是要单独有一个
void print(){
int i;
for(i=SIZE-1;i>0;i--) if(x[i]>0) break;
for(;i>=0;i--) cout<<x[i]; cout<<endl;
}
主函数部分
//主函数部分
int main(){
//freopen("xplusy.in","r",stdin); 测试的时候注释掉 等提交时再去掉
//freopen("xplusy.out","w",stdout); 测试的时候注释掉 等提交时再去掉
string s1,s2;
cin>>s1>>s2;
converts(x,s1);
converts(y,s2);
add();
print();
return 0;
}
完整代码
#include<bits/stdc++.h>
#define SIZE 209
using namespace std;
int x[SIZE],y[SIZE];
void converts(int *a,string s){
int i,len=s.size();
for(i=0;i<len;i++) a[i]=s[len-i-1]-'0';
for(;i<SIZE;i++) a[i]=0;
}
void add(){//a+=b
//逐位相加
for(int i=0;i<SIZE;i++){
x[i]=x[i]+y[i];
if(x[i]>=10){//进位
x[i+1]++;
x[i]-=10;
}
}
}
void print(){
int i;
for(i=SIZE-1;i>0;i--) if(x[i]>0) break;
for(;i>=0;i--) cout<<x[i]; cout<<endl;
}
int main(){
freopen("xplusy.in","r",stdin);
freopen("xplusy.out","w",stdout);
string s1,s2;
cin>>s1>>s2;
converts(x,s1);
converts(y,s2);
add();
print();
return 0;
}
没账号的小盆友看这里
#include<bits/stdc++.h>
#define SIZE 209
using namespace std;
int x[SIZE],y[SIZE];
void converts(int *a,string s){
int i,len=s.size();
for(i=0;i<len;i++) a[i]=s[len-i-1]-'0';
for(;i<SIZE;i++) a[i]=0;
}
void add(){//a+=b
//逐位相加
for(int i=0;i<SIZE;i++){
x[i]=x[i]+y[i];
if(x[i]>=10){//进位
x[i+1]++;
x[i]-=10;
}
}
}
void print(){
int i;
for(i=SIZE-1;i>0;i--) if(x[i]>0) break;
for(;i>=0;i--) cout<<x[i]; cout<<endl;
}
int main(){
freopen("xplusy.in","r",stdin);
freopen("xplusy.out","w",stdout);
string s1,s2;
cin>>s1>>s2;
converts(x,s1);
converts(y,s2);
add();
print();
return 0;
}
https://www.etiger.vip/https://www.etiger.vip/ 点击直接提交
1002题
题目描述
输入三行,正整数x,y和z,输出x+y+z的值
注意:x,y,z<=10500
输入输出格式
输入格式
输入文件plus.in 三行正整数
输出格式
输出文件plus.out 一个正整数
输入输出样例
输入样例#1:
10000000000000000000000 99999999999999999999999 1
输出样例#1:
110000000000000000000000
1002题主题思路与1001相同
只是多了一个加数
所以......
直接上代码!
1002题完整代码
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
void convert(int *a,string s,int size=200009){
int i,len=s.size();for(i=0;i<len;i++) a[i]=s[len-i-1]-'0';
for(;i<size;i++) a[i]=0;
}
void add(int *a,int *b,int size=200009){
for(int i=0;i<size;i++) if((a[i]+=b[i])>=10) a[i+1]++,a[i]-=10;
}
void add(int *a,int b,int size=200009){
for(int i=0;i<size or b;i++){
a[i]+=(b%10);
b/=10;
if(a[i]>=10){
a[i]-=10,a[i+1]++;
}
}
}
void print(int *a,int size=200009){
int i;for(i=size;i>0;i--) if(a[i]!=0) break;
for(;i>=0;i--) cout<<a[i];
}
int x[2000009],y[2000009],z[2000009];
int main(){
string a,b,c;
cin>>a>>b>>c;
convert(x,a);
convert(y,b);
convert(z,c);
add(x,y);
add(x,z);
print(x);
return 0;
}
没账号的小朋友看这里
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
void convert(int *a,string s,int size=200009){
int i,len=s.size();for(i=0;i<len;i++) a[i]=s[len-i-1]-'0';
for(;i<size;i++) a[i]=0;
}
void add(int *a,int *b,int size=200009){
for(int i=0;i<size;i++) if((a[i]+=b[i])>=10) a[i+1]++,a[i]-=10;
}
void add(int *a,int b,int size=200009){
for(int i=0;i<size or b;i++){
a[i]+=(b%10);
b/=10;
if(a[i]>=10){
a[i]-=10,a[i+1]++;
}
}
}
void print(int *a,int size=200009){
int i;for(i=size;i>0;i--) if(a[i]!=0) break;
for(;i>=0;i--) cout<<a[i];
}
int x[2000009],y[2000009],z[2000009];
int main(){
string a,b,c;
cin>>a>>b>>c;
convert(x,a);
convert(y,b);
convert(z,c);
add(x,y);
add(x,z);
print(x);
return 0;
}
以上就是本期所有内容了 谢谢
希望各位大佬们点个赞👍吧!!!求求啦~~~
关注+点赞超过100个立马更新哦!
版权声明:本文为CSDN博主「ian20120124_」的原创文章,如需转载,请通知CSDN博主「ian20120124_」。
————————————————————————————————
————————————————
————————————————