杭电oj

Posted ragd0ll

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了杭电oj相关的知识,希望对你有一定的参考价值。

2031  进制转换

 1 #include<stdio.h>
 2 #include<string.h>
 3 
 4 int main(){
 5     int n,i,r,x,j,flag;
 6     int s[1000];
 7     while(scanf("%d %d",&n,&r)!=EOF){
 8         flag = 0;
 9         if(n<0){flag=-1;n=-n;}
10         i = 0;
11         while(n>0){
12             x = n%r;
13             s[i] = x;
14             i++;
15             n = n/r;
16         }
17         if(flag==-1){
18             printf("-");
19         }
20         for(j=i-1;j>=0;j--){
21             if(s[j]==10){printf("A");}
22             else if(s[j]==11){printf("B");}
23             else if(s[j]==12){printf("C");}
24             else if(s[j]==13){printf("D");}
25             else if(s[j]==14){printf("E");}
26             else if(s[j]==15){printf("F");}
27             else{printf("%d",s[j]);}
28         }
29         printf("
");
30     }
31 }

 

2033  人见人爱A+B

 1 #include<stdio.h>
 2 #include<string.h>
 3 
 4 int main(){
 5     int n,AH,AM,AS,BH,BM,BS,SUMH,SUMM,SUMS;
 6     while(scanf("%d",&n)!=EOF){
 7         while(n--){
 8             scanf("%d %d %d %d %d %d",&AH,&AM,&AS,&BH,&BM,&BS);
 9             SUMS = AS + BS;
10             SUMM = AM + BM;
11             SUMH = AH + BH;
12             if(SUMS>=60){SUMM++;SUMS -= 60;}
13             if(SUMM>=60){SUMH++;SUMM -= 60;}
14             printf("%d %d %d
",SUMH,SUMM,SUMS);
15         }
16     }
17 
18 }

 

2070  Fibbonacci Number

 1 #include<stdio.h>
 2 #include<string.h>
 3 
 4 int main(){
 5     int i,j;
 6     _int64 a[10000];
 7     while(scanf("%d",&i)!=EOF){
 8         if(i==-1){break;}
 9         a[0]=0;a[1]=1;
10         for(j=2;j<=i;j++){
11             a[j] = a[j-1] + a[j-2];
12         }
13         printf("%I64d
",a[i]);
14     }
15     
16 
17 }

 

2071  Max Num

 1 #include<stdio.h>
 2 #include<string.h>
 3 
 4 int main(){
 5     int n,m,i;
 6     double h[110];
 7     while(scanf("%d",&n)!=EOF){
 8         while(n--){
 9             scanf("%d",&m);
10             for(i=1;i<=m;i++){
11                 scanf("%lf",&h[i]);
12             }
13             h[0] = 0;
14             for(i=1;i<=m;i++){
15                 if(h[0]<h[i]){
16                     h[0]=h[i];
17                 }
18             }
19             printf("%.2lf
",h[0]);
20             
21         }
22     }
23 }

 

2075  A|B?

 1 #include<stdio.h>
 2 
 3 int main(){
 4     _int64 a,b;
 5     int n;
 6     while(scanf("%d",&n)!=EOF){
 7         while(n--){
 8             scanf("%I64d %I64d",&a,&b);
 9             if(a%b==0){printf("YES
");}
10             else{printf("NO
");}
11         }
12     }
13 }

 

2089  不要62

 1 #include<stdio.h>
 2 #include<string.h>
 3 #include<stdlib.h>
 4 
 5 int s[1000000];
 6 int main(){
 7     int n,m,i,count;
 8     char stri[10];
 9     for(i=0;i<=1000000;i++){
10             itoa(i,stri,10);
11             if(strstr(stri,"4")==NULL && strstr(stri,"62")==NULL){s[i]=1;}
12             else{s[i]=0;}
13         }
14     while(scanf("%d %d",&n,&m)!=EOF){
15         if(n==0&&m==0){break;}
16         count = 0;
17         
18         for(i=n;i<=m;i++){count += s[i];}
19         printf("%d
",count);
20     }
21     
22 }

这里有点坑,首先先要生成100000个数据的数组,提前判断是否是不吉利数,再输入后就直接查询,不然就会Time Limit Exceeded。

 

2090  算菜价

 1 #include<stdio.h>
 2 
 3 
 4 int main(){
 5     double n,p,sum=0;
 6     char s[1000];
 7     while(scanf("%s %lf %lf",&s,&n,&p)!=EOF){
 8 
 9         sum += n*p;
10     }
11     printf("%.1lf
",sum);
12 }

 

2092  整数解

 1 #include<stdio.h>
 2 
 3 
 4 int main(){
 5     int n,m,a,k,flag;
 6     while(scanf("%d %d",&n,&m)!=EOF){
 7         flag=0;
 8         if(n==0&&m==0){break;}
 9         if(m==0){printf("Yes
");}
10         if(m<0){k=-m;}else{k=m;}
11         for(a=1;a<=k/2;a++){
12             if(m%a==0 && (a+m/a==n || (-a)+m/(-a)==n)){printf("Yes
");flag=1;break;}
13         }
14         if(flag==0){printf("No
");}
15     }
16 }

 

2096  小明A+B

 1 #include<stdio.h>
 2 
 3 int main(){
 4     int n,a,b,sum;
 5     while(scanf("%d",&n)!=EOF){
 6         while(n--){
 7             scanf("%d %d",&a,&b);
 8             sum = a%100+b%100;
 9             if(sum>99){sum %= 100;}
10             printf("%d
",sum);
11         }
12     }
13 }

 

2097  Sky数

 1 #include<stdio.h>
 2 
 3 int hex(int n){
 4     int sum=0;
 5     while(n>15){
 6         sum = sum + n%16;
 7         n /= 16;
 8     }
 9     sum = sum + n;
10     return sum;
11 }
12 
13 int dms(int n){
14     int sum=0;
15     while(n>11){
16         sum = sum + n%12;
17         n /= 12;
18     }
19     sum = sum + n;
20     return sum;
21 }
22 
23 int main(){
24     int n,a,b,c,d,sum,sum1,sum2;
25     while(~scanf("%d",&n)){
26         if(n==0){break;}
27         a = n%10;
28         b = n/10%10;
29         c = n/100%10;
30         d = n/1000;
31         sum = a+b+c+d;
32         sum1 = hex(n);
33         sum2 = dms(n);
34         if(sum==sum1 && sum==sum2){printf("%d is a Sky Number.
",n);}
35         else{printf("%d is not a Sky Number.
",n);}
36     }
37 }

 

2098  分拆素数和

 1 #include<stdio.h>
 2 #include<math.h>
 3 
 4 int ispn(int n){
 5     int i,flag=0;
 6     for(i=2;i<=n/2;i++){
 7         if(n%i==0){flag=1;break;}
 8     }
 9     return flag;
10 }
11 
12 int main(){
13     int n,i,count;
14     while(~scanf("%d",&n)){
15         if(n==0){break;}
16         count = 0;
17         for(i=2;i<n/2;i++){
18             if(ispn(i)==0 && ispn(n-i)==0){count++;}
19         }
20         printf("%d
",count);
21     }
22 }

 

2099  整除的尾数

 1 #include<stdio.h>
 2 #include<string.h>
 3 #include<stdlib.h>
 4 
 5 
 6 int main(){
 7     int a,b,i,j,len,k;
 8     char s[100][10],str[10];
 9     while(~scanf("%d %d",&a,&b)){
10         if(a==0&&b==0){break;}
11         j=0;
12         for(i=a*100;i<=a*100+99;i++){
13             if(i%b==0){
14                 itoa(i,str,10);
15                 strcpy(s[j],str);
16                 j++;
17             }
18         }
19         for(i=0;i<j;i++){
20             k = atoi(s[i]);
21             if(i==j-1){
22                 if(k%100<10){printf("0%d
",k%100);}
23                 else{printf("%d
",k%100);}
24             }else{
25                 if(k%100<10){printf("0%d ",k%100);}
26                 else{printf("%d ",k%100);}
27             }
28         }
29     }
30 }

 

以上是关于杭电oj的主要内容,如果未能解决你的问题,请参考以下文章

杭电oj2037——今年暑假不AC(java实现)

杭电oj_2035——人见人爱A^B(java实现)

进制转换————杭电oj 2031题(c语言解决)

杭电oj 1106

杭电oj-1001

杭电OJ2022