A. 完全平方数 (前n项平方和)高精度 加减乘除例题 我起了 一枪秒不了

A. 完全平方数
Description
在圣慧星兰女子学院中,流传这七大不可思议的故事。
其中一个名叫:钟楼的狼人。
传说钟楼的狼人会在夜晚的特定时间出现,而为了算出狼人下一次出现的时间,你决定去请教数学非常好的小H同学。然而小H同学正在和她的男朋友约会,于是,不耐烦的她丢给了你这样一个问题并对你说:把这个问题解决了再来找我。
为了知道钟楼的狼人的秘密,你学要尽快解决这个问题,当然,听完这个问题的你非常高兴,因为这个问题对你来说实在太简单了。这个问题就是:求12+22+32+……+n2的值。

Input
一行,一个整数n。

Output
一行,一个整数,表示这个值

Samples
Input Copy
3
Output
14
Hint
【解释说明】
1^2+ 2^ 2+3^ 2=1+4+9=14。

【数据范围】

对于30%的数据,3≤n≤1000000。
对于100%的数据,3≤n≤10^1000。
输入数据保证n不含有前导0。

【备注】1^2+ 2^2 + 3^2+……+ n^ 2=n*(n+1)*(2n+1)/6。
、、、、、、、、、、、、、、、、、、、、、、、、、

辛辛苦苦 零零散散 学高精度 虽说只学了一点点皮毛

我也是醉了 不知道怎么说啊 还有很多高精度不会1

这个题啊 就是高精度啊 不会的话 还是得看看高精度 然后 再看这个题

(我的博客里有一个高精度好像 诶嘿,怎么说 那个博客也是我看这个题才写的)
我起了 这波秒不了

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn =1e6+199 ;
char shu1[maxn];
int qo1[maxn];
int qo2[maxn];
int qo3[maxn];
int jg[maxn]={0};
int jg1[maxn]={0};
int jg2[maxn]={0};
void jia(int a[])
{
    a[1]+=1;
    int i=1;
   while(a[i]==10)
   {
       a[i]=0;
       a[i+1]++;

       a[0]+=(i==a[0]);
       i++;
   }
}
void gcheng(int a[],int b[])
{
    jg[0]=a[0]+b[0];
    for(int i=1;i<=a[0];i++)
    {
        for(int j=1;j<=b[0];j++)
        {
            jg[i+j-1]+=a[i]*b[j];
        }
    }

    for(int i=1;i<=jg[0];i++)
    {
        if(jg[i]>=10)
        {
            jg[i+1]+=jg[i]/10;
            jg[i]%=10;

            jg[0]+=(i==jg[0]);
        }

    }

     while(jg[0]>1&&jg[jg[0]]==0)
    {
        jg[0]--;
    }

}
void gcheng1(int a[],int b[])
{
     jg1[0]=a[0]+b[0];
    for(int i=1;i<=a[0];i++)
    {
        for(int j=1;j<=b[0];j++)
        {
            jg1[i+j-1]+=a[i]*b[j];
        }
    }

    for(int i=1;i<=jg1[0];i++)
    {
        if(jg1[i]>=10)
        {
            jg1[i+1]+=jg1[i]/10;
            jg1[i]%=10;
            jg1[0]+=(i==jg1[0]);
        }

    }
     while(jg1[0]>1&&jg1[jg1[0]]==0)
    {
        jg1[0]--;
    }
}
void dcheng(int a[])
{
    for(int i=1;i<=a[0];i++)
    {
        a[i]*=2;
    }

   for(int i=1;i<=a[0];i++)
    {
        if(a[i]>=10)
        {

        a[i+1]+=a[i]/10;
        a[i]%=10;
        a[0]+=(i==a[0]);
        }
    }
}
void chu(int a[],int n)
{
    int x=0;
     for(int i=a[0];i>=1;i--)
    {
        jg2[i]=(x*10+a[i])/n;
        x=(x*10+a[i])%n;
    }
    jg2[0]=a[0];
    while(jg2[jg2[0]]==0&&jg2[0]>1)
        jg2[0]--;

}
void pl(int a[])
{
    for(int i=a[0];i>=1;i--)
        cout<<a[i];
}
int main()
{
	scanf("%s",shu1);
	int len1=strlen(shu1);
	for(int i=0;i<len1;i++)
    {
        qo1[len1-i]=shu1[i]-'0';
        qo2[len1-i]=shu1[i]-'0';
        qo3[len1-i]=shu1[i]-'0';
    }
    qo1[0]=qo2[0]=qo3[0]=len1;
    jia(qo2);
    dcheng(qo3);
    jia(qo3);
    gcheng(qo1,qo2);
    gcheng1(jg,qo3);
    chu(jg1,6);
    pl(jg2);
    return 0;
}
  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

牛郎恋刘娘,刘娘念牛郎

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值