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
描述
一个数如果从左往右读和从右往左读数字是相同的,则称这个数是回文数,如121,1221,15651都是回文数。给定位数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时 。。超时。。
待我学习了递归 我将不再超时!!!!!