超难题目之高精混合

wurenchao 2022-09-09 21:34:54 13

题目描述

用高精度方法,求1+2+3+...+n的精确值(n是500位以内正整数) 可以考虑设计为 乘法 (首项+末项)*项数 / 2

输入 一行,包含一个正整数n

输出 一行,包含一个正整数,表示从 1一直加到n的累加和

样例输入 10

样例输出 55

贴心正确代码:

#include #include<string.h> using namespace std; #define max 502//根据需求调整大小~~~ int a[max],b[max],c[max]; int main() { string s;cin>>s; int x,i,j; int len=s.size(); for(int i=0;i<len;i++){ a[len-i]=s[i]-'0'; b[len-i]=s[i]-'0'; } b[1]++; for(int i=1;i<len;i++){ if(b[i]==10){ b[i]=0; b[i+1]++; } else break; } for(int i=1;i<=len;i++){ x=0; for(int j=1;j<=len;j++){ c[i+j-1]+=a[j]b[i]+x; x=c[i+j-1]/10; c[i+j-1]%=10; } c[i+len]=x; } int lenc=2len; for(int i=lenc;i>=1;i--){ if(c[i]%2==0){ c[i]/=2; } else{ c[i-1]+=10; c[i]/=2; } } while(c[lenc]==0&&lenc>1) lenc--; for(int i=lenc;i>=1;i--) cout<<c[i]; return 0; }

{{ vote && vote.total.up }}

共 1 条回复

071maozihan

Python 秒杀