【总结】2014新生暑假个人排位赛01

A. 学姐的桌面 2014新生暑假个人排位赛01

时间限制 1000 ms 内存限制 65536
KB

题目描写叙述

学姐在增加集训队之后。学习了使用ubuntu系统来做题,可是没有了360电脑管家,学姐再也没办法看到她的飞速电脑开机究竟虐了全国多少人。作为一个电脑高手。学姐花了几分钟黑到了360的数据库拿到了全国360用户的开机时间,如今学姐想自己算算究竟打败了百分之多少的人?

输入格式

输入有多组数据。

首先给出数据组数T(T≤10),以下T组数据,每组开头为n(1≤n≤100000),360的用户数,和t,学姐的开机时间,接下来n个数字,ti代表第i个用户的开机时间。

当中t,ti为非负整数且小于109。

输出格式

每组数据一行,输出学姐打败了全国百分之多少的用户,精确到小数点后两位。

输入例子

1
5 3
1 1 2 2 3

输出例子

80.00%

这题数据有问题。,,越大的反而越快

水题,一炮

#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;
int num[111111];
int main()
{
    #ifndef ONLINE_JUDGE
        freopen("D:/in.txt","r",stdin);
        //freopen();
    #endif
    int T;
    scanf("%d",&T);
    while(T--)
    {

        int n,s;
        scanf("%d%d",&n,&s);
        for(int i=1;i<=n;i++)
        {
            scanf("%d",num+i);
        }
        sort(num+1,num+1+n);
        int i=1;
        for(i=1;i<=n;i++)
        {
            if(num[i]>=s)
                break;
        }
        //cout<<"i::"<<i<<endl;
        double ans=(i-1)*1.0/n;
        printf("%.2f",ans*100);
        cout<<"%\n";
    }
    return 0;
}

B. 学姐去学车 2014新生暑假个人排位赛01

时间限制 1000 ms 内存限制 65536
KB

题目描写叙述

趁着放假。学姐去学车好带学弟去兜风。可是学车真的非常辛苦,每天五点半就要起床赶班车,可是学姐的教练更辛苦,他们要同样的时间到并且日日如此。于是温和的学姐关切的问了他们的歇息情况,教练告诉她。他们两个人倒班教学姐,每一个教练每上n天班就会放一天假,假设一个教练放假,就由还有一个教练来代课。一直代课到自己放假再换人。
如今学姐想知道,每一天是哪个教练给她上课。

输入格式

输入開始为数据组数T(T≤10),接下来T组输入,第一行为n,m,我们如果第一天教学姐的是教练1。并且他教学姐的前一天刚刚放完假。教练2则会在学姐上课的第m天放假,1≤m≤n 以保证每天都有教练教学姐。接下一行为q(q≤103),即询问次数,接着q行,每行ti表示学姐想问哪天的教练是谁。由于教练们很很厉害。并且学姐不知道自己究竟会花多久学完车。你的程序要处理的n。m,ti上限为109。

输出格式

对于每一个询问ti,输出一行。1或2代表当天的教练。

输入例子

1
5 3
3
6
9
13

输出例子

2
1
2

签到题,一炮,逻辑题。命名挺优雅

#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;
int num[111111];
int main()
{
    #ifndef ONLINE_JUDGE
        freopen("D:/in.txt","r",stdin);
        //freopen();
    #endif
    int T;
    scanf("%d",&T);
    while(T--)
    {
        int n,m;
        scanf("%d%d",&n,&m);
        int oneZero=n+1;
        int oneShi=m+n+1;
        int relativeShi_one=oneShi-oneZero;
        int twoZero=m;
        int twoShi=n+1;
        int relativeShi_two=twoShi-twoZero;
        int len=n+1;
        int quesnum;scanf("%d",&quesnum);
        int ques;
        for(int i=1;i<=quesnum;i++)
        {
            scanf("%d",&ques);
            if(ques<=n)
            {
                printf("1\n");
                continue;
            }
            int inONE=(ques-n-1)%len;
            int inTWO=(ques-m)%len;
            if(inONE==0)
                printf("2\n");
            else if(inONE<relativeShi_one)
                printf("2\n");
            else
                printf("1\n");
        }
    }
    return 0;
}

C. 学姐的学弟 2014新生暑假个人排位赛01

时间限制 1000 ms 内存限制 65536
KB

题目描写叙述

学姐正在写作业。可是她写着写着就開始想学弟,走神的她就開始在纸上画圈圈。这时学弟突然出现了,好奇的学弟问学姐在做什么,惊慌之下,学姐随口说想算一下这些圆覆盖的面积为多少。学弟顿时很敬仰学姐。可是学姐突然意识到自己不会做,为了自己能给学弟留下好印象。她来求助你帮她算出来这些圆覆盖的面积。

为了简化问题,我们如果全部圆的半径都为1。

输入格式

输入有多组数据。开头为一个整数T(T≤10),表示数据组数,接下来T组输入,每组开头为一个整数n(1≤n≤100),表示学姐画的圆的个数。接下来n行,每行两个整数xi,yi,表示圆的圆心坐标,1≤xi,yi≤100。

输出格式

输出一个数,表示面积并,精确到小数点后五位。

输入例子

1
2
1 1
2 1

输出例子

5.05482

这题,初始是全零的整点阵,把圆心都标记为1,然后,面积仅仅有3种情况你懂得,遍历全部4个点组成的格子,看4个点的圆心分布情况

#include <iostream>
#include <cstdio>
#include <cmath>
#include <cstdlib>
#include <cmath>
#include <algorithm>
#include <stack>
#include <vector>
#include <cstring>
const double pi=acos(-1.0);
using namespace std;
int g[111][111];
int main()
{
    int T;scanf("%d",&T);
    double sq1=0.25*pi;
    double sq2=pi/6+sqrt(3)/4;
    while(T--)
    {
        memset(g,0,sizeof(g));
        int num;scanf("%d",&num);
        for(int i=1;i<=num;i++)
        {
            int x,y;scanf("%d%d",&x,&y);
            g[x][y]=1;
        }
        double ans=0;
        for(int i=0;i<=100;i++)
        {
            for(int j=0;j<=100;j++)
            {
                double tttt=ans;
                int ss=g[i][j]+g[i+1][j]+g[i][j+1]+g[i+1][j+1];
                if(ss==1)
                {
                    ans+=sq1;
                }
                else if(ss>2)
                {
                    ans+=1;
                }
                else if(ss==2&&((g[i][j]==1&&g[i+1][j+1]==1)||(g[i][j+1]==1&&g[i+1][j]==1)))
                {
                    ans+=1;
                }
                else if(ss==2)
                {
                    ans+=sq2;
                }
            }
        }
        printf("%.5f\n",ans);
    }
    return 0;
}

D. BLOCKS 2014新生暑假个人排位赛01

时间限制 1000 ms 内存限制 65536
KB

题目描写叙述

给定一个N?M的矩阵。求问里面有多少个由‘#‘组成的矩形,"There
are 5 ships."。若是里面有一个不是矩形的联通块,则输出"So Sad"

输入格式

1≤n,m≤1000

有多组数据。EOF结束。

输出格式

每行相应一个answer

输入例子

6 8
.....#.#
##.....#
##.....#
.......#
#......#
#..#...#
6 8
.....#.#
##.....#
###...##
.......#
##.....#
#..#...#

输出例子

There are 5 ships.
So Sad

听贺爷说了个神方法

扫描全部的点(.)。假设有这种情况,那就肯定是非连通的。否则,
数左上角的sharp个数就能够了。输出答案

#include <iostream>
#include <cstdio>
#include <cmath>
#include <cstdlib>
#include <cmath>
#include <algorithm>
#include <stack>
#include <vector>
#include <cstring>
using namespace std;
#define N 111111<div class="line number6 index5 alt1"><code class="cpp preprocessor">#include <iostream></code></div><div class="line number7 index6 alt2"><code class="cpp preprocessor">#include <cstdio></code></div><div class="line number8 index7 alt1"><code class="cpp preprocessor">#include <cmath></code></div><div class="line number9 index8 alt2"><code class="cpp preprocessor">#include <cstdlib></code></div><div class="line number10 index9 alt1"><code class="cpp preprocessor">#include <cmath></code></div><div class="line number11 index10 alt2"><code class="cpp preprocessor">#include <algorithm></code></div><div class="line number12 index11 alt1"><code class="cpp preprocessor">#include <stack></code></div><div class="line number13 index12 alt2"><code class="cpp preprocessor">#include <vector></code></div><div class="line number14 index13 alt1"><code class="cpp preprocessor">#include <cstring></code></div><div class="line number15 index14 alt2"><code class="cpp keyword bold">using</code> <code class="cpp keyword bold">namespace</code> <code class="cpp plain">std;</code></div><div class="line number16 index15 alt1"><code class="cpp preprocessor">#define N 111111</code></div><div class="line number17 index16 alt2"><code class="cpp color1 bold">char</code> <code class="cpp plain">g[1111][1111];</code></div><div class="line number18 index17 alt1"><code class="cpp color1 bold">int</code> <code class="cpp plain">main()</code></div><div class="line number19 index18 alt2"><code class="cpp plain">{</code></div><div class="line number20 index19 alt1"><code class="cpp spaces">    </code><code class="cpp color1 bold">int</code> <code class="cpp plain">n,m;</code></div><div class="line number21 index20 alt2"><code class="cpp spaces">    </code><code class="cpp keyword bold">while</code><code class="cpp plain">(</code><code class="cpp functions bold">scanf</code><code class="cpp plain">(</code><code class="cpp string">"%d%d"</code><code class="cpp plain">,&n,&m)!=EOF)</code></div><div class="line number22 index21 alt1"><code class="cpp spaces">    </code><code class="cpp plain">{</code></div><div class="line number23 index22 alt2"><code class="cpp spaces">            </code><code class="cpp keyword bold">for</code><code class="cpp plain">(</code><code class="cpp color1 bold">int</code> <code class="cpp plain">i=0;i<n;i++)</code></div><div class="line number24 index23 alt1"><code class="cpp spaces">            </code><code class="cpp plain">{</code></div><div class="line number25 index24 alt2"><code class="cpp spaces">                </code><code class="cpp functions bold">scanf</code><code class="cpp plain">(</code><code class="cpp string">"%s"</code><code class="cpp plain">,g[i]);</code></div><div class="line number26 index25 alt1"><code class="cpp spaces">            </code><code class="cpp plain">}</code></div><div class="line number27 index26 alt2"><code class="cpp spaces">            </code><code class="cpp color1 bold">bool</code> <code class="cpp plain">isout=</code><code class="cpp keyword bold">false</code><code class="cpp plain">;</code></div><div class="line number28 index27 alt1"><code class="cpp spaces">            </code><code class="cpp keyword bold">for</code><code class="cpp plain">(</code><code class="cpp color1 bold">int</code> <code class="cpp plain">i=0;i<n;i++)</code></div><div class="line number29 index28 alt2"><code class="cpp spaces">            </code><code class="cpp plain">{</code></div><div class="line number30 index29 alt1"><code class="cpp spaces">                </code><code class="cpp keyword bold">for</code><code class="cpp plain">(</code><code class="cpp color1 bold">int</code> <code class="cpp plain">j=0;j<m;j++)</code></div><div class="line number31 index30 alt2"><code class="cpp spaces">                </code><code class="cpp plain">{</code></div><div class="line number32 index31 alt1"><code class="cpp spaces">                    </code><code class="cpp keyword bold">if</code><code class="cpp plain">(g[i][j]==</code><code class="cpp string">'.'</code><code class="cpp plain">)</code></div><div class="line number33 index32 alt2"><code class="cpp spaces">                    </code><code class="cpp plain">{</code></div><div class="line number34 index33 alt1"><code class="cpp spaces">                            </code><code class="cpp keyword bold">if</code><code class="cpp plain">((g[i-1][j]==</code><code class="cpp string">'#'</code><code class="cpp plain">&&g[i-1][j-1]==</code><code class="cpp string">'#'</code><code class="cpp plain">&&g[i][j-1]==</code><code class="cpp string">'#'</code><code class="cpp plain">)||</code></div><div class="line number35 index34 alt2"><code class="cpp spaces">                                </code><code class="cpp plain">(g[i+1][j]==</code><code class="cpp string">'#'</code><code class="cpp plain">&&g[i+1][j-1]==</code><code class="cpp string">'#'</code><code class="cpp plain">&&g[i][j-1]==</code><code class="cpp string">'#'</code><code class="cpp plain">)||</code></div><div class="line number36 index35 alt1"><code class="cpp spaces">                                </code><code class="cpp plain">(g[i][j+1]==</code><code class="cpp string">'#'</code><code class="cpp plain">&&g[i+1][j]==</code><code class="cpp string">'#'</code><code class="cpp plain">&&g[i+1][j+1]==</code><code class="cpp string">'#'</code><code class="cpp plain">)||</code></div><div class="line number37 index36 alt2"><code class="cpp spaces">                                </code><code class="cpp plain">(g[i-1][j]==</code><code class="cpp string">'#'</code><code class="cpp plain">&&g[i-1][j+1]==</code><code class="cpp string">'#'</code><code class="cpp plain">&&g[i][j+1]==</code><code class="cpp string">'#'</code><code class="cpp plain">))</code></div><div class="line number38 index37 alt1"><code class="cpp spaces">                                </code><code class="cpp plain">{</code></div><div class="line number39 index38 alt2"><code class="cpp spaces">                                    </code><code class="cpp functions bold">printf</code><code class="cpp plain">(</code><code class="cpp string">"So Sad\n"</code><code class="cpp plain">);</code></div><div class="line number40 index39 alt1"><code class="cpp spaces">                                    </code><code class="cpp plain">isout=</code><code class="cpp keyword bold">true</code><code class="cpp plain">;</code></div><div class="line number41 index40 alt2"><code class="cpp spaces">                                    </code><code class="cpp keyword bold">break</code><code class="cpp plain">;</code></div><div class="line number42 index41 alt1"><code class="cpp spaces">                                </code><code class="cpp plain">}</code></div><div class="line number43 index42 alt2"><code class="cpp spaces">                    </code><code class="cpp plain">}</code></div><div class="line number44 index43 alt1"><code class="cpp spaces">                </code><code class="cpp plain">}</code></div><div class="line number45 index44 alt2"><code class="cpp spaces">                </code><code class="cpp keyword bold">if</code><code class="cpp plain">(isout)</code></div><div class="line number46 index45 alt1"><code class="cpp spaces">                    </code><code class="cpp keyword bold">break</code><code class="cpp plain">;</code></div><div class="line number47 index46 alt2"><code class="cpp spaces">            </code><code class="cpp plain">}</code></div><div class="line number48 index47 alt1"><code class="cpp spaces">            </code><code class="cpp keyword bold">if</code><code class="cpp plain">(isout)</code></div><div class="line number49 index48 alt2"><code class="cpp spaces">                </code><code class="cpp keyword bold">continue</code><code class="cpp plain">;</code></div><div class="line number50 index49 alt1"><code class="cpp spaces">            </code><code class="cpp color1 bold">int</code> <code class="cpp plain">countn=0;</code></div><div class="line number51 index50 alt2"><code class="cpp spaces">            </code><code class="cpp keyword bold">for</code><code class="cpp plain">(</code><code class="cpp color1 bold">int</code> <code class="cpp plain">i=0;i<n;i++)</code></div><div class="line number52 index51 alt1"><code class="cpp spaces">            </code><code class="cpp plain">{</code></div><div class="line number53 index52 alt2"><code class="cpp spaces">                </code><code class="cpp keyword bold">for</code><code class="cpp plain">(</code><code class="cpp color1 bold">int</code> <code class="cpp plain">j=0;j<m;j++)</code></div><div class="line number54 index53 alt1"><code class="cpp spaces">                </code><code class="cpp plain">{</code></div><div class="line number55 index54 alt2"><code class="cpp spaces">                    </code><code class="cpp keyword bold">if</code><code class="cpp plain">(g[i][j]==</code><code class="cpp string">'#'</code><code class="cpp plain">)</code></div><div class="line number56 index55 alt1"><code class="cpp spaces">                    </code><code class="cpp plain">{</code></div><div class="line number57 index56 alt2"><code class="cpp spaces">                        </code><code class="cpp keyword bold">if</code><code class="cpp plain">(g[i-1][j]!=</code><code class="cpp string">'#'</code><code class="cpp plain">&&g[i][j-1]!=</code><code class="cpp string">'#'</code><code class="cpp plain">)</code></div><div class="line number58 index57 alt1"><code class="cpp spaces">                        </code><code class="cpp plain">{</code></div><div class="line number59 index58 alt2"><code class="cpp spaces">                            </code><code class="cpp plain">countn++;   </code></div><div class="line number60 index59 alt1"><code class="cpp spaces">                        </code><code class="cpp plain">}</code></div><div class="line number61 index60 alt2"><code class="cpp spaces">                    </code><code class="cpp plain">}</code></div><div class="line number62 index61 alt1"><code class="cpp spaces">                </code><code class="cpp plain">}</code></div><div class="line number63 index62 alt2"><code class="cpp spaces">            </code><code class="cpp plain">}</code></div><div class="line number64 index63 alt1"><code class="cpp spaces">            </code><code class="cpp functions bold">printf</code><code class="cpp plain">(</code><code class="cpp string">"There are %d ships.\n"</code><code class="cpp plain">,countn);</code></div><div class="line number65 index64 alt2"><code class="cpp spaces">    </code><code class="cpp plain">}</code></div><div class="line number66 index65 alt1"><code class="cpp spaces">    </code><code class="cpp keyword bold">return</code> <code class="cpp plain">0;</code></div><div class="line number67 index66 alt2"><code class="cpp plain">}</code></div>
char g[1111][1111];
int main()
{
    int n,m;
    while(scanf("%d%d",&n,&m)!=EOF)
    {
            for(int i=0;i<n;i++)
            {
                scanf("%s",g[i]);
            }
            bool isout=false;
            for(int i=0;i<n;i++)
            {
                for(int j=0;j<m;j++)
                {
                    if(g[i][j]=='.')
                    {
                            if((g[i-1][j]=='#'&&g[i-1][j-1]=='#'&&g[i][j-1]=='#')||
                                (g[i+1][j]=='#'&&g[i+1][j-1]=='#'&&g[i][j-1]=='#')||
                                (g[i][j+1]=='#'&&g[i+1][j]=='#'&&g[i+1][j+1]=='#')||
                                (g[i-1][j]=='#'&&g[i-1][j+1]=='#'&&g[i][j+1]=='#'))
                                {
                                    printf("So Sad\n");
                                    isout=true;
                                    break;
                                }
                    }
                }
                if(isout)
                    break;
            }
            if(isout)
                continue;
            int countn=0;
            for(int i=0;i<n;i++)
            {
                for(int j=0;j<m;j++)
                {
                    if(g[i][j]=='#')
                    {
                        if(g[i-1][j]!='#'&&g[i][j-1]!='#')
                        {
                            countn++;
                        }
                    }
                }
            }
            printf("There are %d ships.\n",countn);
    }
    return 0;
}

E. 数的关系 2014新生暑假个人排位赛01

时间限制 5000 ms
内存限制 65536 KB

题目描写叙述

用关系“<”和“=”将3个数A、B和C依序排列时有13种不同的序关系:

A=B=C。A=B<C。A<B=C,A<B<C,A<C<B,A=C<B,B<A=C。

B<A<C,B<C<A,B=C<A。C<A=B,C<A<B,C<B<A。

如今输入数字的个数。要求你给出上述关系的数目。

数的个数不大于100

输入格式

多组数据。EOF结束

每行一个输入

输出格式

对于每一个输入,输出一行,即相应答案

输入例子

3

输出例子

13

dp,方程看程序。用大数模板

#include <iostream>
#include <cstdio>
#include <cmath>
#include <cstdlib>
#include <cmath>
#include <algorithm>
#include <stack>
#include <vector>
#include <cstring>
using namespace std;
class BigInteger
{
public:
    int num[100];
    int maxlenn;
    int len;

    BigInteger()
    {
        maxlenn=300;
        len=0;
        memset(num,0,sizeof(num));
    }

    BigInteger(char* ss)
    {
        maxlenn=300;
        len=0;
        memset(num,0,sizeof(num));
        int& i=this->len;
        int lenofss=strlen(ss);
        char s[10]={0};
        for(i=0;lenofss/4;lenofss-=4)
        {
            strncpy(s,ss+lenofss-4,4);
            this->num[i++]=atoi(s);
        }
        if(lenofss)
        {
            memset(s,0,sizeof(s));
            strncpy(s,ss,lenofss);
            this->num[i++]=atoi(s);
        }
    }

    BigInteger(int s)
    {
        maxlenn=300;
        len=0;
        memset(num,0,sizeof(num));
        while(s>10000)
        {
            num[len++]=s%10000;
            s/=10000;
        }
        if(s)
        {
            num[len++]=s;
        }
    }

    void Print()
    {
        int i;
        printf("%d",num[len-1]);
        for(i=this->len-2;i>=0;i--)
        {
            printf("%04d",this->num[i]);
        }
        printf("\n");
    }

    BigInteger Times(BigInteger sec)//该数本身没有变化,仅仅是返回了结果
    {
        int i,j,jw;
        BigInteger ans;
        for(i=0;i<len;i++)
        {
            jw=0;
            ans.len=i;
            for(j=0;j<sec.len;j++)
            {
                jw+=this->num[i]*sec.num[j]+ans.num[ans.len];
                ans.num[ans.len++]=jw%10000;
                jw/=10000;
            }
            while(jw)
            {
                jw+=ans.num[ans.len];
                ans.num[ans.len++]=jw%10000;
                jw/=10000;
            }
        }
        return ans;
    }

    BigInteger plusone()
    {
        int i=0;
        do
        {
            num[i]++;
            num[i+1]+=num[i]/10000;
            num[i]%=10000;
            i++;
        }while(num[i]<9999);
        return *this;
    }

    BigInteger operator+(const BigInteger& sec)
    {
        bool isUp=false;
        BigInteger tmp=*this;
        int maxn=tmp.len>sec.len?

tmp.len:sec.len;
        for(int i=0;i<maxn;i++)
        {
            /*if(isUp)
            {
                tmp.num[i]++;
                if(tmp.num[i]>=10000)
                {
                    tmp.num[i]=0;
                    isUp=true;
                }
            }*/
            if(tmp.num[i]+sec.num[i]<=9999)
            {
                tmp.num[i]+=sec.num[i];
                if(isUp)
                {
                    tmp.num[i]++;
                    isUp=false;
                    if(tmp.num[i]==10000)
                    {
                        tmp.num[i]=0;
                        isUp=true;
                    }
                }
            }
            else
            {
                tmp.num[i]=tmp.num[i]+sec.num[i]-10000;
                if(isUp)
                {
                    tmp.num[i]++;
                }
                isUp=true;
            }
        }
        if(isUp)
            tmp.num[maxn]=1;
        if(tmp.num[maxn]!=0)
            tmp.len++;
        else
            tmp.len=maxn;
        return tmp;
    }

    BigInteger operator-(const BigInteger& sec)//big-small
    {
        bool isBorrow=false;
        BigInteger tmp=*this;
        for(int i=0;i<this->len;i++)
        {
            if(isBorrow)
            {
                tmp.num[i]-=1;
                if(tmp.num[i]<0)
                    tmp.num[i]=9999;
            }
            if(tmp.num[i]<sec.num[i])
            {
                tmp.num[i]=tmp.num[i]+10000-sec.num[i];
                isBorrow=true;
            }
            else
            {
                tmp.num[i]-=sec.num[i];
                isBorrow=false;
            }
        }
        int i=0;
        for(i=maxlenn-1;;i--)
        {
            if(tmp.num[i]!=0)
                break;
        }
        if(i==0)
            tmp.len=1;
        else
            tmp.len=i+1;
        return tmp;
    }

    BigInteger operator*(const BigInteger sec)
    {
        return this->Times(sec);
    }

    int operator/(const BigInteger& sec)//big/small
    {
        BigInteger tmp=*this;
        int ans=0;
        while(tmp>=sec)
        {
            tmp=tmp-sec;
            ans++;
        }
        return ans;
    }

    BigInteger operator%(const BigInteger& sec)
    {
        BigInteger tmp=*this;
        while(tmp>=sec)
        {
            tmp=tmp-sec;
        }
        return tmp;
    }

    BigInteger& operator++()
    {
        this->plusone();
        return *this;
    }

    bool operator<=(const BigInteger& sec)
    {
        if(len<sec.len)
            return true;
        for(int i=len-1;i>=0;i--)
        {
            if(num[i]>sec.num[i])
                return false;
        }
        return true;
    }

    bool operator>=(const BigInteger& sec)
    {
        if(len>sec.len)
            return true;
        for(int i=len-1;i>=0;i--)
        {
            if(num[i]<sec.num[i])
                return false;
        }
        return true;
    }

    bool operator==(const BigInteger& sec)
    {
        if(len!=sec.len)
            return false;
        for(int i=len-1;i>=0;i--)
        {
            if(num[i]!=sec.num[i])
                return false;
        }
        return true;
    }

    bool operator==(const int& sec)
    {
        if(len!=1)
            return false;
        if(num[0]==sec)
            return true;
        else
            return false;
    }

    bool operator<(const BigInteger& sec)
    {
        if(len<sec.len)
            return true;
        for(int i=len-1;i>=0;i--)
        {
            if(num[i]>sec.num[i])
                return false;
            else if(num[i]<sec.num[i])
                return true;
        }
        return false;
    }

    bool operator>(const BigInteger& sec)
    {
        if(len>sec.len)
            return true;
        for(int i=len-1;i>=0;i--)
        {
            if(num[i]<sec.num[i])
                return false;
            else if(num[i]>sec.num[i])
                return true;
        }
        return false;
    }

    bool operator!=(const BigInteger& sec)
    {
        if(len!=sec.len)
            return true;
        for(int i=len-1;i>=0;i--)
        {
            if(num[i]!=sec.num[i])
                return true;
        }
        return false;
    }

    /*BigInteger GCD(const BigInteger& first,const BigInteger& sec)
    {
        return first%sec==0?sec:GCD(sec,first%sec);
    }

    BigInteger LCM(const BigInteger& first,const BigInteger& sec)
    {
        return first/GCD(first,sec)*sec;
    }*/
};
#define N 111111
BigInteger dp[111][111];
int main()
{
    BigInteger ZERO("0");
    for(int i=0;i<=110;i++)
    {
        for(int j=0;j<=110;j++)
        {
            dp[i][j]=ZERO;
        }
    }
    dp[2][1]=BigInteger(1);
    dp[2][2]=BigInteger(2);
    for(int i=3;i<=100;i++)
    {
        for(int j=1;j<=i;j++)
        {
            char tmpchar[11];
            sprintf(tmpchar,"%d",j);

            /*if(i==7&&j==6)
            {
                cout<<"1::";(BigInteger(tmpchar)*dp[i-1][j]).Print();
                cout<<"2::";(BigInteger(tmpchar)*dp[i-1][j-1]).Print();
                cout<<"dp76::";dp[7][6].Print();
            }*/

            dp[i][j]=dp[i][j]+BigInteger(tmpchar)*dp[i-1][j];
            dp[i][j]=dp[i][j]+BigInteger(tmpchar)*dp[i-1][j-1];

            /*if(i==7&&j==6)
            {
                cout<<"dp76::";dp[7][6].Print();
            }*/

        }
    }
    int ques;
    while(scanf("%d",&ques)!=EOF)
    {
            if(ques==1)
            {
                printf("1\n");
                continue;
            }
            BigInteger ans("0");
            for(int i=1;i<=ques;i++)
            {
                /*if(ques==7)
                {
                    cout<<"ans::";ans.Print();
                    cout<<"dp::"<<"ques::"<<ques<<"i::"<<i<<' ';dp[ques][i].Print();
                }*/
                ans=ans+dp[ques][i];
            }
            ans.Print();
    }
    return 0;
}
时间: 2024-10-05 23:25:24

【总结】2014新生暑假个人排位赛01的相关文章

【总结】2014新生暑假个人排位赛02

A. 丁神去谷歌 2014新生暑假个人排位赛02 时间限制 1000 ms 内存限制 65536 KB 题目描述 丁神要去Google上班了,去之前丁神想再做一道水题,但时间不多了,所以他希望题目做起来既水又快.现在一共有n道题,编号从1到n,每道题有两个值a和b,a为做这道题需要的时间,b为题目的"水值",丁神希望做b/a最大的那题. 输入格式 输入第一行为数据组数T(T≤10),接下来T组数据,每组数据中第一行为一个数n,n为题目的数量,接下来n行,每行两个正整数a和b.如果两道题

【总结】2014新生暑假个人排位赛03

这次题略水,可能是前面几场的比赛的题目太难了,导致我们都是做完签到题呆着一直没事情干. A. 学姐的数码管 2014新生暑假个人排位赛03 时间限制 1000 ms 内存限制 65536 KB 题目描写叙述 学姐的七段数码管玩的出神入化. 如今给你一个浮点数,你须要把它以七段数码管的形式输出出来. 一个的矩阵来表示七段数码管.若下标均从0開始.则以第0列的两个,第列的两个,第0行的一个.第行的一个,第行的一个表示七个段. 小数点所占矩形为,点在中间最以下一列.每个数字或小数点矩阵用一列空格隔开.

2014年暑假学习的日子

2014年的暑假接近尾声,我开始试着去回顾这个暑假的收获.虽然时间比较短只有40天,但收获还是蛮多的,在这个拿出来和大家晒晒. 思想上: 1.见到一种新事物,知道如何和以前的知识建立联系,从心态上不再有畏惧感: 2.开始试着看API文档(英文版),再次验证了学英语的重要性: 3.有了自己的时间管理,虽然每天都有组长催项目进度,但还是能坚持每天看Android视频: 4.严格控制项目期限,必须在规定时间内完成规定的事,比如我们的机房收费搞了将近半年: 5.开始试着结对学习,比如我.宏杰.一清作为一

记2014年暑假,一个项目,三个框架

在开始动笔之际,看了下博文的标题,突然觉得欠妥,"记2014年暑假,一个项目,三个框架",既然是暑假说明还是学生,今年的6月我已经毕业了,但还在学习,并且在向一名合格的架构师狂奔.你说我矫情也好,做作也罢,现实就是这样的,厚着脸说:咱也矫情一回. 整个暑假,总共四十天,从7月中旬开始到8月底,从技术上看,整个假期都处于看视频,做项目,作总结的过程中,前二十天跟着视频做了DRP的项目,后二十天(到8月26日),看完了三个框架的视频,总结还在继续:从英语上看,这个假期是从听走向说的开始:从

2014年暑假c#学习笔记目录

2014年暑假c#学习笔记 一.C#编程基础 1. c#编程基础之枚举 2. c#编程基础之函数可变参数 3. c#编程基础之字符串基础 4. c#编程基础之字符串函数 5.c#编程基础之ref.out参数 二.C#winform编程 1.C#WinForm基础制作简单计算器 2.C#WinForm基础Email分析器 3.C#WinForm基础累加器 4.C#WinForm基础图片(显示和隐藏) 5.C#WinForm基础登陆失败三次退出系统 6.C#WinForm基础城市选择器 三.c#面向

2014年暑假——英语清凉了夏季的炎热

--题记 又是度过了这个城市中一年最热的季节,又是枯燥中夹杂着美丽的学英语的声音.暑假就这么仓促的过去了,是啊,当所有人在感慨时间飞快的时候,有这样一种人是在每天坚持着做一件事的,这样的人都是好样的.我也感慨,时间好快,明天就是开学了,我复制上来早已写好的英语总结. 先不说计算机的学习,想聊一下我的英语.清凉了暑假的炎热. 1.音标 整个暑假英语的学习音标算是一个亮点了,也是进步最大和问题最多的. 开学到8月5日第一遍赖世雄,因为距离这一次的学习是很久之前的事情了,所以这一遍主要是回顾以前学过的

2014,暑假,前进加奋斗。

近期一段时间忙着比赛.忙着复习,忙着考试.就慢慢忘记记录自己的学习路程了,对于7.6号才放假的我来说,真正的大学时光才开启,能够不用再操心上课老师点名没到的情况了,不用再操心没有完整的时间来做项目了,暑假的时间全然属于自己,对于自己技术方面的苛求,以及对新技术的渴望.我能够有个完整的时间来真正的充实一下自己. 当然,对于记录学习历程这件事来说.这段时间我会尽量把自己前段时间做的事以博客专栏的形式来分享出来,尽管还是新手.可是能独立完毕一次完整的项目来说,从中收获的还是非常多的,包含技术,人情,生

2014年暑假总结

概述 时间过得真快啊,不知不觉半年又过去了,这半年发生的事不是太多,但是,每一件事又都是那么的刻骨铭心 学到的技术 java java学习的不是太多,主要有总结了一下之前的j2se,学习了j2ee的理论,学习了drp,drp现没有学习完,在学的过程中停止了,然后,将精力全部放到了.net上. .net 在工作之前,包括在工作时的前一段时间,没有打算继续再往下学习.net,但是,在工作的过程中,发现自己的.net差的很多,缺的很多,而且,学习的不是很全面,之前也纠结到底.net就这么着,还是深入的

ZZUACM 2015 暑假集训 round 01

A. Encoding Problem Description Given a string containing only 'A' - 'Z', we could encode it using the following method: Each sub-string containing k same characters should be encoded to "kX" where "X" is the only character in this sub