zoj 1159 || poj 1002 487-3279

水题。

 

poj和zoj输入格式不一样。

 

zoj PE N次 T T。。水题不解释。

 

#include <queue> #include <stack> #include <math.h> #include <stdio.h> #include <stdlib.h> #include <iostream> #include <limits.h> #include <string.h> #include <algorithm> #define MAX 100010 using namespace std; int a[MAX]; int alp[30] = {2,2,2,3,3,3,4,4,4,5,5,5,6,6,6,7,0,7,7,8,8,8,9,9,9}; int change(char* str) { int len = strlen(str),sum = 0; for(int i=0; i<len; i++) { if( isalpha(str[i] ) ) { sum *= 10; sum += alp[str[i]-'A']; } if( isdigit(str[i]) ) { sum *= 10; sum += str[i]-'0'; } } return sum; } void output(int x,int count) { char str[50]; sprintf(str,"%d",x); int len = strlen(str); int k = 7-len; for(int i=0; i<k; i++) { printf("0"); if( i == 2 ) printf("-"); } for(int p=k; p<7; p++) { printf("%c",str[p-k]); if( p == 2 ) printf("-"); } printf(" %d/n",count); } int main() { int n,ncases; char str[50]; scanf("%d",&ncases); while( ncases-- ) { scanf("%d",&n); for(int i=0; i<n; i++) { scanf("%s",str); a[i] = change(str); } sort( a, a+n ); int tmp = a[0]; a[n] = -1; int count = 1; int flag = 0; for(int i=1; i<=n; i++) { if( a[i] != tmp ) { if( count != 1 ) { flag = 1; output(tmp,count); } tmp = a[i]; count = 1; } else count++; } if( !flag ) printf("No duplicates./n"); if( ncases ) printf("/n"); } return 0; }  

你可能感兴趣的:(c,output)