Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

这个代妈有问题,输入00001就不对

Posted by KatrineYang at 2016-08-04 11:01:01 on Problem 1055
In Reply To:所谓的题解(鉴于此题代码贫瘠,所以提供AC代码) Posted by:BAD_GUY at 2012-08-06 10:34:49
> 数组开到100000才有希望,字符串最好开到10
> 看清x是小写还是大写
> 最好通读一遍题
> 数据结构只用数组就行,少用STL(sort除外)
> #include <cstdio>
> #include <string.h>
> #include <algorithm>
> using namespace std;
> struct output {int ZIP;int cnt,bun;}O[100000];
> char a[10],vil[100000][10];
> bool M[100000];
> int Tv,To,Tl,Tb,cnt[100000];
> bool cmp(output a,output b) {
>     return a.ZIP<b.ZIP;
> }
> int main()
> {
>     while(scanf("%s",a)!=EOF) {
>         if(a[0]=='?') break;
>         bool flag=1;
>         for(int i=0;i<strlen(a);i++)
>             if(!(a[i]>='0' && a[i]<='9')) flag=0;
>         bool flag2=0;
>         for(int i=0;i<strlen(a);i++) if(a[i]!='0') flag2=1;
>         if(strlen(a)!=5 || !flag || !flag2) {
>             for(int i=0;i<strlen(a);i++) vil[Tv][i]=a[i];
>             Tv++;
>             continue;
>         }
>         int num=0;
>         for(int i=0;i<strlen(a);i++) num=num*10+a[i]-'0';
>         cnt[num]++;
>     }
>     //puts("sdfsdf");
>     for(int i=10000;i<=99999;i++) if(cnt[i]>=10){
>         int tmp=i;
>         O[To].ZIP=i,O[To].cnt=cnt[i];
>         Tl+=cnt[i];
>         tmp=0;
>         while(cnt[i]>0) {
>             cnt[i]-=15;
>             tmp++;
>         }
>         O[To].bun=tmp;
>         Tb+=tmp;
>         To++;
>         cnt[i]=0;
>     }
>     sort(O,O+To,cmp);
>     puts("ZIP         LETTERS     BUNDLES\n");
>     for(int i=0;i<To;i++)
>         printf("%d%12d%12d\n",O[i].ZIP,O[i].cnt,O[i].bun);
>     puts("");
>     To=0;
>     for(int i=100;i<=999;i++) {
>         int cnt1=0;
>         for(int j=0;j<=99;j++) cnt1+=cnt[i*100+j];
>         if(cnt1>=10) {
>             for(int j=0;j<=99;j++) cnt[i*100+j]=0;
>             int tmp=i;
>             O[To].ZIP=i,O[To].cnt=cnt1;
>             Tl+=cnt1;
>             tmp=0;
>             while(cnt1>0) {
>                 cnt1-=15;
>                 tmp++;
>             }
>             O[To].bun=tmp;
>             Tb+=tmp;
>             To++;
>         }
>     }
>     sort(O,O+To,cmp);
>     for(int i=0;i<To;i++)
>         printf("%dxx%12d%12d\n",O[i].ZIP,O[i].cnt,O[i].bun);
>     puts("");
>     To=0;
>     for(int i=10000;i<=99999;i++) if(cnt[i]>0){
>         int tmp=i;
>         O[To].ZIP=i,O[To].cnt=cnt[i];
>         Tl+=cnt[i];
>         O[To].bun=0;
>         To++;
>         cnt[i]=0;
>     }
>     sort(O,O+To,cmp);
>     for(int i=0;i<To;i++)
>         printf("%d%12d%12d\n",O[i].ZIP,O[i].cnt,O[i].bun);
>     puts("");
>     printf("TOTALS%11d%12d\n\n",Tl,Tb);
>     puts("INVALID ZIP CODES\n");
>     for(int i=0;i<Tv-1;i++) if(!M[i])
>         for(int j=i+1;j<Tv;j++) if(strcmp(vil[j],vil[i])==0)
>             M[j]=1;
>     for(int i=0;i<Tv;i++) if(M[i]==0)
>         printf("%s\n",vil[i]);
>     return 0;
> }
> 

Followed by:

Post your reply here:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator