本次没有特殊的题目,获得的知识与技巧将会在下一篇总结性质的博文中给出,本篇仅用作代码记录。
第一题:POJ 1207 The 3n+1 problem
- #include <stdio.h>
- int judge (int n); //用于返回循环次数
- int main ()
- {
- int n,k,i,max=0,temp=0,ma,mi;
- while (scanf("%d%d",&n,&k)!=EOF)
- {
-
- if (n<=k)
- {
- ma=k;
- mi=n;
- }
- else
- {
- ma=n;
- mi=k;
- }
- for (i=mi;i<=ma;i++)
- {
- temp=judge(i);
- if (temp>max)
- max=temp;
- }
- printf("%d %d %d\n",n,k,max);
- max=0;
- temp=0;
- }
- return 1;
- }
- int judge (int n)
- {
- int i=0;
- while (n!=1)
- {
- i++;
- if (n%2==1)
- n=3*n+1;
- else
- n/=2;
- }
- i++;
- return i;
- }
第二题:POJ 1218 THE DRUNK JAILER
本题关键:每一次循环后初始化数组!
- #include <stdio.h>
- #include <memory.h>
- int a[103]; //用0表示关,1表示开
- int main ()
- {
- int i,T,n,temp=0;
- scanf("%d",&T);
- while (T--)
- {
- memset(a,0,sizeof(a)); //每一次循环初始化数组
- scanf("%d",&n);
- for (i=1;i<=n;i++)
- {
- temp=i;
- while (temp<=n)
- {
- if (a[temp]==0)
- a[temp]=1;
- else a[temp]=0;
- temp+=i;
- }
- }
- temp=0;
- for (i=1;i<=n;i++)
- {
- if (a[i]==1)
- temp++;
- }
- printf("%d\n",temp);
- temp=0;
- }
- return 1;
- }
第三题:POJ 3094 Quicksum
- #include <stdio.h>
- int main ()
- {
- char ch;
- int sum=0,k,i=1;
- while(scanf("%c",&ch)&&
- {
- if (ch=='\n')
- {
- printf("%d\n",sum);
- i=1;
- sum=0;
- }
- else
- {
- if (ch==' ')
- k=0;
- else
- k=ch-'A'+1;
- sum+=i*k;
- i++;
- }
- }
- return 1;
- }
第四题:POJ 2350 Above Average
- #include <stdio.h>
- double a[1003];
- int main ()
- {
- int T,t,i,num=0;
- double sum=0;
- scanf("%d",&T);
- while (T--)
- {
- sum=0;
- scanf("%d",&t);
- for (i=0;i<t;i++)
- {
- scanf("%lf",&a[i]);
- sum+=a[i];
- }
- sum/=t;
- for (i=0,num=0;i<t;i++)
- {
- if (a[i]>sum)
- num++;
- }
- sum=1.0*num/t;
- printf ("%.3lf%%\n",sum*100);
- }
- return 1;
- }
第五题:POJ 1833 排列
- #include <stdio.h>
- #include <stdlib.h>
- #include <algorithm>
- using namespace std;
- int a[1030];
- int main ()
- {
- int n,k,T,i;
- scanf("%d",&T);
- while (T--)
- {
- scanf("%d%d",&n,&k);
- for (i=0;i<n;i++)
- a[i]=i;
- for (i=0;i<n;i++)
- scanf("%d",&a[i]);
- for (i=0;i<k;i++)
- next_permutation(a,a+n);
- for (i=0;i<n;i++)
- {
- printf("%d",a[i]);
- if (i!=n-1)
- printf(" ");
- else
- printf("\n");
- }
- }
- return 1;
- }
第六题:POJ 2608 Soundex
关于本题技巧,详见总结 - #include <stdio.h>
- char c[22];
- int main ()
- {
- int i;
- while (scanf("%s",c)!=EOF)
- {
- for(i=0;c[i]!=0;i++)
- {
- switch (c[i])
- {
- case 'B':case 'F':case 'P':case 'V': c[i]='1';break;
- case 'C':case 'G':case 'J':case 'K': case 'Q':case 'S':case 'X':case 'Z':c[i]='2';break;
- case 'D':case 'T': c[i]='3';break;
- case 'L':c[i]='4';break;
- case 'M':case 'N': c[i]='5';break;
- case 'R':c[i]='6';break;
- default :c[i]='0';
- }
- }
- for(i=0;c[i]!=0;i++)
- {
- if (c[i]==c[i+1])
- c[i]='0';
- }
- for(i=0;c[i]!=0;i++)
- {
- if (c[i]!='0')
- printf("%c",c[i]);
- }
- printf("\n");
- }
- return 1;
-
- }
阅读(319) | 评论(0) | 转发(0) |