社区讨论

代码是不是有bug

灌水区参与者 11已保存回复 24

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
24 条
当前快照
1 份
快照标识符
@mi7ycyej
此快照首次捕获于
2025/11/21 05:37
4 个月前
此快照最后确认于
2025/11/21 06:51
4 个月前
查看原帖
RT。
为什么我的高精代码测试的时候自动吃回车。 RT 很懵B。望有大佬可以解释一下->
CPP
#include <cstdio>
#include <iostream>
#include <cstring>

using namespace std;

int n,a[201],b[201],s[201];
string ans;

string cheng(string s1,string s2)
{
	string str;
	memset(s,0,sizeof s);
	memset(a,0,sizeof a);
	memset(b,0,sizeof b);
	int len1,len2,len,x = 0;
	len1 = s1.length();
	len2 = s2.length();
	for(int i = 0 ; i < len1 ; ++ i)
		a[len1 - i] = s1[i] - '0' ;
	for(int i = 0 ; i < len2 ; ++ i)
		b[len2 - i] = s2[i] - '0' ;
	len = len1 + len2;
	for(int i = 1 ; i <= len1 ; ++ i) {
		x = 0;
		for(int j = 1 ; j <= len2 ; ++ j) {
			s[i + j - 1] = a[i] * b[j] + x +s[i + j - 1];
			x = s[i + j - 1] / 10 ;
			s[i + j - 1] %= 10 ;
		}
		s[i + len2] = x ;
	}
	while(s[len] == 0 && len > 1)
		len -- ;
	for(int i = 1 ; i <= len ; ++ i){
		str = char(s[i] + '0') + str;
	}
	return str ;
}

string f(int v)
{
	if(v == 0)
		return "1";
	int t,k,len1,len2;
	string str;
	str = "1" ;
	for(int i = 2 ; i <= v ; ++ i) {
		string s;
		k = i ;
		while(k) {
			t = k % 10 ;
			s = char(t + '0') + s;
			k /= 10 ;
		}
		str = cheng(str,s);
	}
	return str;
}
string jia(string s1,string s2)
{
	int len1,len2,x,y,z,t,len;
	string str;
	len1 = s1.length();
	len2 = s2.length();
	if(len1 < len2)
		for(int i = 1 ; i <= len2 - len1 ; ++ i)
			s1 = "0" + s1 ;
	else
		for(int i = 1 ; i <= len1 - len2 ; ++ i)
			s2 = "0" + s2 ;
	t = 0 ;
	len = s1.length();
	for(int i = len - 1 ; i >= 0 ; -- i) {
		x = s1[i] - '0' ;
		y = s2[i] - '0' ;
		z = x + y + t;
		t = z / 10 ;
		z %= 10 ;
		str = char(z + '0') + str ;
	}
	if(t != 0)
		str = char(t + '0') + str ;
	return str ;
}
int main()
{
//	freopen("a.in","r",stdin);
//	freopen("a.out","w",stdout);
	int x ;
	ans = "0" ;
	cin>>n;
	for(int i = 1 ; i <= n ; ++ i) {
		cin >> x;
		ans = jia(f(x),ans);
	}
	cout << ans ;
	return 0;
}

回复

24 条回复,欢迎继续交流。

正在加载回复...