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时  。。超时。。

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

原文地址:https://www.cnblogs.com/zyker/p/5879208.html