最小公倍数数学题_最小公倍数几年级学的「建议收藏」

最小公倍数数学题_最小公倍数几年级学的「建议收藏」其实也没什么。。就是用到了按位取模和最后对整个数取模的答案是一样的结论。但是蒟蒻我想的太复杂了,甚至还写了高精度。。。。放上丑陋无比的代码。。。includeincludeincludeincludeincludedefineMAXN246913578definemod123

大家好,欢迎来到IT知识分享网。

最小公倍数数学题_最小公倍数几年级学的「建议收藏」
其实也没什么。。就是用到了按位取模和最后对整个数取模的答案是一样的结论。但是蒟蒻我想的太复杂了,甚至还写了高精度。。。。
放上丑陋无比的代码。。。

#include<iostream>
#include<cstring>
#include<algorithm>
#include<cstdio>
#include<map>
#define MAXN 246913578
#define mod 1234567890
using namespace std;
string s;
map<int,int>m;
int a[200010],b[200010],c[400010];
long long cur,cur_ans;
long long getsum()
{
	long long sum=0;
	for(int i=0;i<s.length();i++)
		sum=sum*10+(s[i]-'0');
	return sum;
}
void solve(int k)
{
	int sum=0;
	for(int i=0;i<s.length();i++) 	
		sum=(sum*10+(s[i]-'0'))%k;
	if(sum==0) m[k]++;
	if(sum==0&&k==9) m[3]++;
}
void mul(string n1,string n2)
{
    int lena=n1.length(),lenc=0,x=0;
    int lenb=n2.length();
    //cout<<"lena="<<lena<<" lenb="<<lenb<<endl;
    //cout<<"n1="<<n1<<" n2="<<n2<<endl;
    for(int i=0;i<lena;i++)     a[lena-1-i]=n1[i]-'0';
    for(int i=0;i<lenb;i++)     b[i]=n2[i]-'0';
    for(int i=0;i<lena;i++)
    {
        x=0;
        for(int k=0;k<lenb;k++)
        {
            c[i+k]+=a[i]*b[k]+x;
            x=c[i+k]/10;
            c[i+k]%=10;
        }
        c[lenb+i]=x;
    }
    lenc=lena+lenb;
    while((c[lenc]==0)&&(lenc>0))  lenc--;
    for(int i=lenc;i>=0;i--) cur_ans=(cur_ans*10+c[i])%mod;//cout<<c[i];
    cout<<cur_ans<<endl;
    // for(int i=lenc;i>=0;i--) cout<<c[i];
    //cout<<endl;
    return;
}
int main()
{
	freopen("lcm.in","r",stdin);
	freopen("lcm.out","w",stdout);
	cin>>s;
	long long a=MAXN;
	if(s.length()<=9) 
	{
		cur=getsum();
		if(MAXN%cur==0)
		{
			cout<<MAXN<<endl;
			return 0;
		}
	}
	solve(2);
	solve(3);
	solve(9);
	solve(3607);
	solve(3803);
	if(m[2]) a/=2;
	if(m[3]) a/=3,m[3]--;
	if(m[3]) a/=3;
	if(m[3607]) a/=3607;
	if(m[3803]) a/=3803;
	//cout<<"a="<<a<<endl;
	string aa;
	while(a)
	{
		aa+=(char)(a%10+'0');
		a/=10;
	}
	//cout<<"aa="<<aa<<endl;
	mul(s,aa);
	return 0;
}

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/29486.html

(0)

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信