用高精度咋写呀????我只会用低精度

交流的喜悦

Problem ID: 7716

Contest ID: 4308

必做题

Wrong Answer

时间:1s 空间:256M

题目描述:

有n个人,每个人都拥有一个喜悦值,接下来,任意两个人之间会进行一次交流,任意两个人交流所获得的贡献为两个人的喜悦值的和,求任意两个人交流所获得的贡献之和

输入格式:

第一行一个整数n

接下来n行,每行一个整数a,表示第i个人的喜悦值

输出格式:

按题目描述输出

样例输入1:

3

2

3

4

样例输出1:

18

约定:

n<=1000

1<=a<=10^100

提示:

2 个赞

思路吗

2 个赞
#include<bits/stdc++.h>
using namespace std;
string s;
int n;
int a[1005][10005],c[1000005];
int lenlen[3];
int main(){
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>s;
		lenlen[2]=s.size();
		for(int j=0;j<lenlen[2];j++){
			a[lenlen[2]-j][i]=s[j]-'0';
		}
		lenlen[1]=max(lenlen[1],lenlen[2])+1;
		for(int j=1;j<=lenlen[1];j++){
			c[j]+=a[j][i];
		}
		for(int j=1;j<=lenlen[1];j++){
			c[j+1]+=c[j]/10;
			c[j]%=10;
}
	}
	for(int i=1;i<=lenlen[1];i++){
		c[i-1]*=(n-1);
	}
	for(int j=1;j<=lenlen[1];j++){
			c[j+1]+=c[j]/10;
			c[j]%=10;
}
	while(c[lenlen[1]]==0&&lenlen[1]>1){
		lenlen[1]--;
	}
	for(int i=lenlen[1];i>=1;i--) cout<<c[i];
	return 0;
} 

高精×于+的水题

2 个赞
#include <bits/stdc++.h>
using namespace std;
string s[1005];
char c[1005], ans[1005]; 
int a[100100];
int main() {
    int n;
    cin >> n;
    int tmp = 0;
    int lenc = 0;
    for(int i = 1; i <= n; i++) {
    	cin >> s[i];
    	int len = s[i].size();
        for(int j = 0; j < len; j++) {
        	a[len - j] += s[i][j] - '0';
    	}
    	for(int j = 1; j <= lenc; j++) {
    		a[j + 1] += a[j] / 10;
    		a[j] %= 10;
		}
		while(a[lenc + 1]) {
			lenc++;
		}
    }
    for(int i = 1; i <= lenc; i++) {
        a[i] *= (n - 1);
    }
    for(int i = 1; i <= lenc; i++) {
    	a[i + 1] += a[i] / 10;
    	a[i] %= 10;
	}
	while(a[lenc + 1]) {
		lenc++;
	}
	while(a[lenc] == 0 && lenc > 1) {
		lenc--;
	}
	for(int i = lenc; i >= 1; i--) {
		cout << a[i];
	}
    return 0;
}
2 个赞

直接粘源码,举报了

2 个赞

你也不是?

2 个赞

我至少有思路把

2 个赞

你这叫思路

2 个赞

《真·思路》

2 个赞