杭电oj
淡若晨曦
这个作者很懒,什么都没留下…
展开
-
杭电2057
用hex输入输出十六进制数,这样就不用进行进制转换了,简便很多十六进制的为大写字母,所以要用setiosflags(ios::uppercase)将十六进制的字母变成大写字母,还要注意范围#include#includeusing namespace std;int main(){ __int64 a, b; while(cin>>hex>>a>>b){原创 2013-05-23 23:52:28 · 530 阅读 · 0 评论 -
杭电2099
注意小于10的时候要在数字前面输出一个0#includeusing namespace std;int main(){ int m,n,a[10000]; while(cin>>m>>n&&(m!=0&&n!=0)) { int c,i,k1,k2,first=0,k=1,z=0; k1=m*100/n; k2=(m*100+100)/n; fo原创 2013-06-01 00:22:38 · 546 阅读 · 0 评论 -
杭电1089
#includeusing namespace std;int main(){ int a,b; while(cin>>a>>b) cout return 0;}原创 2013-06-03 18:21:57 · 492 阅读 · 0 评论 -
杭电1090
#includeusing namespace std;int main(){ int a,b,n; cin>>n; for(int i=0;i { cin>>a>>b; cout } return 0;}原创 2013-06-03 18:26:32 · 524 阅读 · 0 评论 -
杭电1092
#includeusing namespace std;int main(){ int n; while(cin>>n&&n!=0) { int sum=0,a; for(int i=0;i { cin>>a; sum=sum+a; } cout } return 0;}原创 2013-06-03 18:35:22 · 605 阅读 · 0 评论 -
杭电1093
#includeusing namespace std;int main(){ int n; cin>>n; for(int i=0;i { int a,b,sum=0; cin>>a; for(int j=0;j { cin>>b; sum+=b; } cout }}原创 2013-06-03 18:39:30 · 444 阅读 · 0 评论 -
行电1091
#includeusing namespace std;int main(){ int a,b; while(cin>>a>>b&&(a!=0||b!=0)) cout return 0;}原创 2013-06-03 18:31:28 · 436 阅读 · 0 评论 -
杭电1094
#includeusing namespace std;int main(){ int n; while(cin>>n) { int a,sum=0; for(int i=0;i { cin>>a; sum+=a; } cout } return 0;}原创 2013-06-03 18:43:10 · 514 阅读 · 0 评论 -
杭电1720
注意直接用十六进制#includeusing namespace std;int main(){int a,b;while(cin>>hex>>a>>b){cout}}原创 2013-06-04 00:32:02 · 448 阅读 · 0 评论 -
杭电1095
#includeusing namespace std;int main(){ int a,b; while(cin>>a>>b) cout}原创 2013-06-03 18:46:05 · 556 阅读 · 0 评论 -
杭电2050
画上第n条折线时,平面上有2*(N-1)条直线,当一条直线与每条直线相交一次时就把原有的一个平面分成两个片面,所以增加了2*(N-1)个平面,因为是折线,所以两条直线共增加了2*2*(N-1)个平面,又因为折线的顶角会产生一个平面,所以共增加了2*2*(N-1)+1个平面,所以num(n)=2*2*(n-1)+1+num(n-1)#includeusing namespace std;原创 2013-05-15 12:53:47 · 510 阅读 · 1 评论 -
杭电2061
要注意输出的格式:当处理一组数据后要输出隔一行在处理下一行数据当处理完N行数据后再输入N的值的时候就不输出空行了输入的数据不是整型的#include#includeusing namespace std;int main(){ int n; while(cin>>n) { for(int i=0;i { int m,k=1; double原创 2013-05-28 12:35:14 · 530 阅读 · 0 评论 -
杭电2058
刚开始想着通过a算出b再判断是否满足,但是这样要做n,m中那个小的数次循环,当n和m均很大的时候就会超时,如下:#include#includeusing namespace std;int main(){ __int64 n,m,l,i,b; double a; while((cin>>n>>m)&&(n!=0&&m!=0)) {if(n>m) l=原创 2013-05-24 00:10:20 · 589 阅读 · 0 评论 -
杭电2045
注意:和杭电2043 一样,结果太大要用64位处理思路:用迭代的方法要判断第n个元素和第一个元素是否一样,要根据第(n-1)个元素,当它与第一个元素相同时,此时第n个元素有两种,前(n-2)个元素的种类有num(n-2);此时共有2*num(n-2)种;当它不同时,此时第n个元素只有一种,前(n-1)个元素的种类有num(n-1);此时共有num(n-1)种;所以num(n)=nu原创 2013-05-12 00:21:12 · 612 阅读 · 0 评论 -
杭电2070
#include#includeusing namespace std;int main(){ int n; cin>>n; for(int i=0;i { int m; float a[100],max=0.0; cin>>m; for(int j=0;j { cin>>a[j]; if(a[j]>max) m原创 2013-05-25 23:37:40 · 418 阅读 · 0 评论 -
杭电2047
写出前三项就可以看出规律a[n]=a[n-1]*2+a[n-2]*2要用64位存储#includeusing namespace std;int main(){ int n,i; __int64 a[41]; a[1]=3; a[2]=8; for(i=3;i a[i]=a[i-1]*2+a[i-2]*2; while(cin>>n) {原创 2013-05-12 13:02:19 · 577 阅读 · 0 评论 -
杭电2046
迭代法只有注意不要溢出就行 用——int64#includeusing namespace std;int main(){ int n,i; __int64 a[51]; a[1]=1; a[2]=2; for(i=3;i a[i]=a[i-2]+a[i-1]; while(cin>>n) { cout } return 0;原创 2013-05-12 12:36:17 · 437 阅读 · 0 评论 -
杭电2059
要算起点到第i个充电点的最短时间,做一个循环,依次求出从各个充电点充满电后到第i个充电点的时间tem,由于起点到该点的时间前面已经求出为tp[j],所以起点到该点的时间为tp[j]+tem选出里面的最短时间作为tp[i],在依次求出后面的最短时间就可以求出总的最短时间了#includeusing namespace std;int main(){ int i,j,p[10原创 2013-05-27 00:04:00 · 752 阅读 · 0 评论 -
杭电2060
看了好久都不明白题目的意思,百度斯诺克才知道讲的是什么。。。。斯诺克规则:将红色球与彩色球分别交替落袋,直至所有红色球全部离台,然后按彩球分值由低至高的顺序也至全部离台为止。就是说当还有红球的时候,进一个红球再进一个彩球这样交替进行,彩球进后取出,当红球全进的后只剩彩球时再依次打进彩球得分,此时彩球不取出#includeusing namespace std;int main(原创 2013-05-27 14:04:35 · 542 阅读 · 0 评论 -
杭电2048
刚开始做得时候只考虑到前面N-1个人拿的都不是自己的票,然而可以有一个人不拿自己的票;考虑不完全 如果前面N-1个人拿的都不是自己的票,即前N-1个人满足错排,现在又来了一个人,他手里拿的是自己的票。只要他把自己的票与其他N-1个人中的任意一个交换,就可以满足N个人的错排。这时有N-1种方法。另外,我们考虑,如果前N-1个人不满足错排,而第N个人把自己的票与其中一个人交换后恰好满足错排。这原创 2013-05-13 13:20:24 · 702 阅读 · 3 评论 -
杭电2049
有M个人选错就是杭电2048题中的错序,从N个人中选择M个人,然后求出M个人中的错序#includeusing namespace std;int main(){ __int64 jicheng(int a); __int64 ji(int a,int b); __int64 w[21]; int c,i; w[1]=0; w[2]=1; w[3]=2;原创 2013-05-14 13:44:48 · 395 阅读 · 0 评论 -
杭电1096
#includeusing namespace std;int main(){ int n; cin>>n; for(int i=0;i { int a,b,sum=0; cin>>a; for(int j=0;j { cin>>b; sum+=b; } if(i cout else cout }原创 2013-06-03 18:51:25 · 506 阅读 · 0 评论 -
杭电1062
刚开始写的时候是用一个数组记录所有的单词反过来的,然后一起输出会超时(这个是超时的)#includeusing namespace std;int main(){ void change(char a[20],int l); int t,l,k=0; cin>>t; for(int i=0;i { char a[1000]={0},b[20],c,d[1]原创 2013-06-04 23:28:34 · 503 阅读 · 0 评论 -
杭电2089
当数组比较大的时候,定义成全局变量才能使用#includeusing namespace std;int s[1000005];int main(){ int n,m,i,a,b,c,sum=0,k; for(i=1;i { k=1; c=i; while(c!=0) { a=c%10; c=c/10; if(a==4)原创 2013-06-17 23:46:12 · 420 阅读 · 0 评论 -
杭电2090
#include#include#includeusing namespace std;int main(){ string name; double number,a,sum=0.0; while(cin>>name>>number>>a) { sum+=a*number; } cout}原创 2013-06-18 18:15:06 · 655 阅读 · 0 评论 -
杭电2092
结果为double型的时候,分子,分母不能同时为int型的#include#includeusing namespace std;int main(){ int n,m; while(cin>>n>>m&&(n!=0||m!=0)) { double t; t=1.0*n*n-4.0*m; if(t>=0)原创 2013-06-19 18:36:14 · 500 阅读 · 0 评论 -
杭电2096
#includeusing namespace std;int main(){ int t; cin>>t; for(int i=0;i { int a,b,c; cin>>a>>b; a=a%100; b=b%100; c=(a+b)%100; cout }}原创 2013-06-19 22:52:17 · 501 阅读 · 0 评论 -
杭电1108
#includeusing namespace std;int main(){ int n,m; while(cin>>n>>m) { int c,a,b,q,p; if(n>m) { c=n; n=m; m=c; } a=m%n; q=m; p=n; while(a!=0) { q=p;原创 2013-06-20 17:25:26 · 440 阅读 · 0 评论 -
杭电2097
#includeusing namespace std;int main(){ int sum(int n,int c); int n; while(cin>>n&&n!=0) { int a,b,c; a=sum(n,10); b=sum(n,12); c=sum(n,16); if(a==b&&a==c) cout else原创 2013-06-19 23:27:50 · 572 阅读 · 0 评论 -
杭电2098
#include#includeusing namespace std;int main(){ int shu(int a); int n,i; while(cin>>n&&n!=0) { int sum=0; for(i=3;i { if(shu(i)) { if(shu(n-i)) { sum++原创 2013-06-19 23:51:21 · 619 阅读 · 0 评论 -
杭电2138
#include#includeusing namespace std;int main(){ int n; while(cin>>n) { double a; int sum=0,i,k=1,j,b; for(j=0;j { cin>>a; b=a; k=1; for(i=2;i原创 2013-06-21 17:31:22 · 644 阅读 · 0 评论 -
杭电1713
#includeusing namespace std;int main(){ __int64 yue(__int64 m,__int64 n); int t; cin>>t; for(int i=0;i { __int64 a,b,c,d,e,f,m,n; scanf("%I64d/%I64d",&a,&b); scanf("%I64d/%I64原创 2013-06-22 18:03:13 · 540 阅读 · 0 评论 -
杭电2081
#includeusing namespace std;int main(){ int n,i,j; char a[201][11]; cin>>n; for(i=0;i { cin>>a[i]; } for(i=0;i { cout for(j=6;j cout cout }}原创 2013-06-07 23:45:31 · 457 阅读 · 0 评论 -
杭电2075
#includeusing namespace std;int main(){ __int64 a,b; int t; cin>>t; for(int i=0;i { cin>>a>>b; if((1.0*a/b)>(a/b)) cout else cout } return 0;}原创 2013-06-16 16:23:53 · 577 阅读 · 0 评论 -
杭电2104
但两个最大公约数为1的时候才能遍历所有的数据故只需判断两个最大公约数是否为一就行#includeusing namespace std;int main(){ __int64 m,n; while(cin>>m>>n&&(m!=-1||n!=-1)) { int k=m; if(m>n) { k=m; m=n; n=k;原创 2013-06-05 17:38:22 · 743 阅读 · 0 评论 -
杭电1064
#include#includeusing namespace std;int main(){ float a[12],sum=0.0; int i; for(i=0;i { cin>>a[i]; sum=sum+a[i]; } cout}原创 2013-06-05 17:49:57 · 774 阅读 · 0 评论 -
杭电2734
#include#includeusing namespace std;int main(){ char a[256]; gets(a); while(a[0]!='#') { int sum=0,l,i,b; l=strlen(a); for(i=0;i { if(a[i]==' ') b=0; else b原创 2013-06-05 18:01:54 · 487 阅读 · 0 评论 -
杭电1170
注意算除法的时候要分别考虑除得尽和除不尽的时候#include#includeusing namespace std;int main(){ int t,i; while(cin>>t) { for(i=0;i { char a; int b,c; cin>>a>>b>>c; getchar(); if(a=='+') c原创 2013-06-05 18:20:08 · 466 阅读 · 0 评论 -
杭电1197
#includeusing namespace std;int main(){ int liu(int n,int b); int i,j,b; for(i=2992;i { b=liu(i,10); if(liu(i,12)==b) { if(liu(i,16)==b) cout } }}int liu(int n,原创 2013-06-05 18:36:25 · 469 阅读 · 0 评论 -
杭电2070
#includeusing namespace std;int main(){ int n,i; __int64 a[51]; a[0]=0; a[1]=1; for(i=2;i a[i]=a[i-1]+a[i-2]; while(cin>>n&&n!=-1) { cout }}原创 2013-06-15 16:50:45 · 429 阅读 · 0 评论