试题 入门训练 序列求和
看到1 <= n <= 1,000,000,000。
就应该知道该用大数模板了
我乘除写到一个函数了
#include<iostream>
using namespace std;
int n,p1[20],p2[20],p3[20];
int la=0,lb=0;
long long int ans;
void fn1(int a,int b){
while(a!=0){
p1[la]=a%10;
a/=10; la++;
}
while(b!=0){
p2[lb]=b%10;
b/=10; lb++;
}
int na=0,nx;
for(int i=0;i<lb;i++){
na=0;
for(int j=0;j<la;j++){
nx=p3[i+j]+p2[i]*p1[j]+na;
p3[j+i]=nx%10;
na=nx/10;
}
if(na!=0) p3[i+la]=na;
}la=la+lb-1;
if(na!=0){
p3[la]=na; la++;
}na=0;
for(int i=la-1;i>=0;i--){
nx=(na*10+p3[i]);
p3[i]=nx/2;
na=nx%2;
}
}
int main(){
cin>>n;
fn1(n+1,n);
int y=0;
for(int i=la-1;i>=0;i--){
if(p3[i]!=0) y=1;
if(y) cout<<p3[i];
}cout<<endl;
return 0;
}