萌新求助
查看原帖
萌新求助
258270
cpsoiroad楼主2020/7/18 01:35

贴代码

#include <iostream>
#include <string>
#include <cstring>
using namespace std;


//字符串扩大x倍 
string mul(string b,int x,bool f)	//f为标记符号,若为0则个位,若为1为十位 
{
	if (x==0) return "0";
	int l=b.length()-1;
	int next=0;
	for (int i=l;i>=0;i--)
	{
		b[i]=((b[i]-48)*x)+48+next;
		if (b[i]-48>=10) 
		{
			next=(b[i]-48)/10;
			b[i]=(b[i]-48)%10+48; 
		} 
		else next=0;
	}
	if (next!=0)
	{
		char c=next+48;
		b=c+b;
	}
	//cout<<b<<" mul\n"; 
	if (f==0)
	return b;
	else return b+'0';
}

//两字符串相加 
string add(string a,string b)
{
	bool flag=false;
	int l1=a.length();
	int l2=b.length();
	int max;
	if (l1<l2) 
	{
	
		for (int i=l2-l1;i>0;i--)
		a=' '+a;
		max=l2;
	}
	else
	{
	
		for (int i=l1-l2;i>0;i--)
		b=' '+b;
		max=l1;
	}
	int next=0;
	for (int i=max-1;i>=0;i--)
	{
		if (a[i]==' ' || b[i]==' ') a[i]+=16; //空格的ASCII码为32,与0相差16 
		a[i]=a[i]-48+b[i]+next;
		if (a[i]-48>=10)
		{
			next=1;
			a[i]=a[i]-10;
		}
		else next=0;
	}
	if (next!=0)
	a='1'+a;
	//cout<<a<<" add\n";
	return a;
	
	
}

int main()
{
	int n;
	cin>>n;
	string s="1";
	
	for (int i=2;i<=n;i++)
	{
		string b="1";
		for (int j=1;j<=i;j++)
		b=add(mul(b,j/10,1),mul(b,j%10,0));
		s=add(s,b);
	}
	cout<<s<<endl;
 } 

为什么数字一大就会出现乱码, 比如输入48, 输出126781637985540517671726433732557313925000316ェ誖6珊0420940313

首尾的答案没差异,中间乱码怎么解决?

谢谢大佬指点

2020/7/18 01:35
加载中...