• 2016.6.26考试


    1.蜗牛

    (puz.pas/c/cpp)

     

    【问题描述】

    在一口井里,有一只神牛(其实是蜗牛),它打算从井底爬到地面上。已知井的深度为V米,蜗牛每天白天可以往上爬A米,可是每天晚上睡觉的时候,它会杯具地向下滑落B米。

    求蜗牛需要多少天才能爬出井。

    【输入】

    包括三个由空格分开的数字:A,B和V       
    其中(1≤B<A≤V≤1 000 000 000)。     (p.s:注意数据范围

    【输出】

    一个整数,计算蜗牛爬上木杆需要的天数。

    【输入输出样例1】

    puz.in

    puz.out

    5 1 6

    2

    【输入输出样例2】

    puz.in

    puz.out

    6 1 6

    1


    #include<iostream>
    #include<iomanip>
    #include<algorithm>
    #include<cstdio>
    using namespace std;
    int main()
    {
        int a,b,v,tian=0,sum=0;
        freopen("puz.in","r",stdin);
        freopen("puz.out","w",stdout);
        cin>>a>>b>>v;
        for(int i=1;;i++)
        {
            sum=sum+a;
            tian++;
            if(sum>=v)
                break;
            sum=sum-b;
        }
        cout<<tian<<endl;
        return 0;
    }

    以上为超时代吗。。

    正解:

    #include<iostream>
    #include<iomanip>
    #include<algorithm>
    #include<cstdio>
    using namespace std;
    int main()
    {
        int a,b,v,tian=0,sum=0;
        /*freopen("puz.in","r",stdin);
        freopen("puz.out","w",stdout);*/
        cin>>a>>b>>v;
        if(a>=v)cout<<"1"<<endl;
        if(a<v)
        {
            if((v-a)%(a-b)==0)
                cout<<(v-a)/(a-b)+1<<endl;
            else
                cout<<(v-a)/(a-b)+2<<endl;
        }
        return 0;
    }

    2.又是图形输出

      (picture.pas/c/cpp)

    【问题描述】

          热衷图形输出的XW老师对于OJ上的图形输出题很不满意,认为难度太低,所以他亲自设计了此题来考验大家(╯﹏╰)。为了可以输出更大的图形,同时保证美观性,XW老师决定当输出的数字大于9的时候用小写字母进行代替(a代替10,b代替11,往后依次)。

    【输入】

    一个整数 N(1 ≤ N ≤ 35)

    【输出】

        一个所谓菱形。具体看样例。

    【输入输出样例1】

    picture.in

    picture.out

    4

     

    第一行和最后一行中间都有一个空格。

    【输入输出样例2】

    picture.in

    picture.out

    11

     

    【数据范围】

     70%的数据满足 1 ≤ N ≤ 9;

     100%的数据满足  1 ≤ N ≤ 35



    #include<iostream>
    #include<iomanip>
    #include<algorithm>
    #include<cstdio>
    using namespace std;
    int main()
    {
        freopen("picture.in","r",stdin);
        freopen("picture.out","w",stdout);
        int n,a,b=1,c;
        char ch;
        cin>>n;
        a=n;
        for(int i=1;i<=n;i++)
        {
            if(i>=10)
            {
                ch='a'+i-10;
            }
            c=i;
            for(int j=1;j<=a;j++)
            {
                if(i<=9)
                    cout<<c;
                if(i>9)
                    cout<<ch;
            }
            for(int j=1;j<=b;j++)
            {
                cout<<" ";
            }
            b=b+2;
            for(int j=1;j<=a;j++)
            {
                if(i<=9)
                    cout<<c;
                if(i>9)
                    cout<<ch;
            }
            a--;
            cout<<endl;
        }
        a=a+2;
        b=b-4;
        for(int i=n-1;i>0;i--)
        {
            if(i>=10)
            {
                ch='a'+i-10;
            }
            c=i;
            for(int j=1;j<=a;j++)
            {
                if(i<=9)
                    cout<<c;
                if(i>9)
                    cout<<ch;
            }
            for(int j=1;j<=b;j++)
            {
                cout<<" ";
            }
            b=b-2;
            for(int j=1;j<=a;j++)
            {
                if(i<=9)
                    cout<<c;
                if(i>9)
                    cout<<ch;
            }
            a++;
            cout<<endl;
        }
        return 0;
    }


    3、回文素数

    (prime.pas/c/cpp)

    总时间限制: 

    5000ms

     

    内存限制: 

    65536kB

    描述

    一个数如果从左往右读和从右往左读数字是相同的,则称这个数是回文数,如121122115651都是回文数。给定位数n,找出所有既是回文数又是素数的n位十进制数。(注:不考虑超过整型数范围的情况)。

    输入

    位数n,其中1<=n<=9

    输出

    第一行输出满足条件的素数个数。
    第二行按照从小到大的顺序输出所有满足条件的素数,两个数之间用一个空格区分。

    样例输入

    1

    样例输出

    4

    2 3 5 7


    #include<iostream>
    #include<iomanip>
    #include<algorithm>
    #include<cstdio>
    #include<cmath>
    using namespace std;
    const int maxn=233333;
    long long n,sum=0,b=1,c,d=0,e,f,g,y,x;
    int a[maxn],z[maxn];
    bool test(int num)
    {
        for(int i=2;i*i<=num;i++)
            if(num%i==0)
                return 0;
        return 1;
    }
    int main()
    {
        freopen("prime.in","r",stdin);
        freopen("prime.out","w",stdout);
        cin>>n;
        for(int i=1;i<=n;i++)
            b=10*b;
        c=b/10+1;
        for(int i=c;i<=b;i++)
        {
            if(i%10==i*10/b)
            {
                if(test(i))
                {
                    d++;
                    a[d]=i;
                }
            }
        }
        for(int i=1;i<=d;i++)
        {
            g=0;
            e=a[i];
            for(;e>0;)
            {
                f=e%10;
                g=g*10+f;
                e=e/10;
            }
            if(g==a[i])
            {
                sum++;
                z[sum]=a[i];
            }
        }
        cout<<sum<<endl;
        for(int i=1;i<=sum;i++)
            cout<<z[i]<<" ";
        return 0;
    }

    由于,知识不够,在n=8,9时  。。超时。。

    待我学习了递归    我将不再超时!!!!!

  • 相关阅读:
    【转】职场中如何才能学会心理自控
    Gof《设计模式》完结
    阿里巴巴CEO马云最新超经典哲学语录
    大话设计模式感悟(3)——策略模式(Strategy)
    设计模式 ( 十三 ) 命令模式Command(对象行为型)
    数据结构&算法实践Python——序章
    设计模式 ( 十八 ) 策略模式Strategy(对象行为型)
    设计模式 ( 十六 ) 观察者模式Observer(对象行为型)
    金融系列2《借贷记卡应用》
    php 设计模式数据映射模式(应用程序与数据库交互模式)
  • 原文地址:https://www.cnblogs.com/zyker/p/5879208.html
Copyright © 2020-2023  润新知