zoukankan      html  css  js  c++  java
  • Vijos 黑皮的正方形 (找规律+高精)

    背景

    金堂人杰地灵,金玉满堂!金堂中学就是这金玉满堂之中一颗璀璨的明珠!黑皮就在金堂最有名的金堂中学求学....

    描述

    一天他不务正业出去耍,看见街上的地板是由很多小的正方形组成,顿时心里突发奇想想要总结一下到底有多少正方形。。。。

    于是乎,他狠下心数了数,终于翻山越岭知道了正方形的总边长为N,你的目的是找出在可以组成的每个至少边为1的正方形的个数。(因为黑皮太笨了,无法找到)。。

    格式

    输入格式

    自然数(0<=n<=32767)

    输出格式

    一个数,即正方形的总数

    样例1

    样例输入1

    2
    

    样例输出1

    5
    

    限制

    各个测试点1s

    提示

    本题太简单了,na上来个大家,解解烦~~~~
    《呵呵》

     1 /*
     2     规律不难找 就是a[i]=a[i-1]+i*i 
     3     就是 n有点大 long long只过两个点 
     4     只好打高精了 
     5 */
     6 #include<cstdio>
     7 #include<cstring>
     8 #include<iostream>
     9 #define ll long long
    10 #define MAXN 1010
    11 
    12 using namespace std;
    13 
    14 int n;
    15 int a[MAXN],b[MAXN],c[MAXN];
    16 
    17 inline void cc(ll p) {
    18     memset(b,0,sizeof b);
    19     while(p) {
    20         int t=p/10;
    21         b[++b[0]]=p-t*10;
    22         p/=10;
    23     }
    24     return;
    25 }
    26 
    27 inline void pluss() {
    28     c[0]=max(b[0],a[0])+1;
    29     for(int i=1;i<=c[0];i++) {
    30         c[i]+=a[i]+b[i];
    31         if(c[i]>=10) {
    32             c[i+1]+=c[i]/10;
    33             c[i]%=10;
    34         }
    35     }
    36     while(c[0]>0&&!c[c[0]]) c[0]--;
    37     for(int i=0;i<=c[0];i++) a[i]=c[i];
    38     memset(c,0,sizeof c);
    39 }
    40 
    41 int main() {
    42     scanf("%d",&n);
    43     a[0]=1;
    44     a[1]=1;
    45     for(int i=2;i<=n;i++) {
    46         cc(i*i);
    47         pluss();
    48     }
    49     for(int i=a[0];i>=1;i--) printf("%d",a[i]);
    50     printf("
    ");
    51     return 0;
    52 }
    代码


    作者:乌鸦坐飞机
    出处:http://www.cnblogs.com/whistle13326/
    新的风暴已经出现 怎么能够停止不前 穿越时空 竭尽全力 我会来到你身边 微笑面对危险 梦想成真不会遥远 鼓起勇气 坚定向前 奇迹一定会出现

     
  • 相关阅读:
    ZeptoLab Code Rush 2015
    UVa 10048 Audiophobia【Floyd】
    POJ 1847 Tram【Floyd】
    UVa 247 Calling Circles【传递闭包】
    UVa 1395 Slim Span【最小生成树】
    HDU 4006 The kth great number【优先队列】
    UVa 674 Coin Change【记忆化搜索】
    UVa 10285 Longest Run on a Snowboard【记忆化搜索】
    【NOIP2016提高A组模拟9.28】求导
    【NOIP2012模拟10.9】电费结算
  • 原文地址:https://www.cnblogs.com/whistle13326/p/7111561.html
Copyright © 2011-2022 走看看