| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
Re:who can help meIn Reply To:who can help me Posted by:zs20043490 at 2006-04-14 19:17:24 #include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
struct data
{
unsigned a : 1 ;
unsigned b : 1 ;
unsigned c : 1 ;
unsigned d : 1 ;
unsigned e : 1 ;
unsigned f : 1 ;
unsigned g : 1 ;
unsigned h : 1 ;
};
struct tum
{
long shu ;
int hao ;
};
int same(struct tum *p , long i)
{
int j ;
for(j = 0 ; j < 10000 ; j ++){
if( (( p + j ) -> shu) == i){
return j;
}
}
return -1;
}
long change ( char * p , int len)
{
long q = 0;
char o[8]={0};
int j , i = 0;
for(j = 0 ; j < len ; j ++ ){
if(*(p + j) == '-'){
continue;
}
else{
o[i] = *(p + j) ;
i ++;
}
}
for(i = 0 ; i < strlen(o) ; i ++){
if(o[i] == 'A' && o[i] == 'B' && o[i] == 'C'){
o[i] = 2;
}
if(o[i] == 'D' && o[i] == 'E' && o[i] == 'F'){
o[i] = 3;
}
if(o[i] == 'G' && o[i] == 'H' && o[i] == 'I'){
o[i] = 4;
}
if(o[i] == 'J' && o[i] == 'K' && o[i] == 'L'){
o[i] = 5;
}
if(o[i] == 'M' && o[i] == 'N' && o[i] == 'O'){
o[i] = 6;
}
if(o[i] == 'P' && o[i] == 'R' && o[i] == 'S'){
o[i] = 7;
}
if(o[i] == 'T' && o[i] == 'U' && o[i] == 'V'){
o[i] = 8;
}
if(o[i] == 'W' && o[i] == 'X' && o[i] == 'Y'){
o[i] = 9;
}
}
for(j = strlen(o) - 1 ; j > -1 ; j --){
q += (o[j] - 48) * pow(10 , strlen(o) - j - 1 );
}
return q;
}
int main()
{
struct data sum[1250000] = { 0 };
long i , j , n ;
char str[15] = { 0 } ;
struct tum num[10000] = { 0 };
int k = -2 , c = 0 , m = 0 ;
scanf("%ld" , &n);
for(i = 0 ;i < n ; i ++ ){
scanf("%s" , &str);
j=change(str , strlen(str));
if( j % 8 == 0 ){
if( sum[j / 8].a == 1 ){
c = 1;
k = same(&num[0] , j );
if(k == -1){
num[m].shu = j;
m++;
}
else{
num[k].hao ++;
}
}
else{
sum[j / 8].a = 1;
}
}
if( j % 8 == 1 ){
if( sum[j / 8].b == 1 ){
c = 1;
k = same(&num[0] , j );
if(k == -1){
num[m].shu = j ;
m++;
}
else{
num[k].hao++;
}
}
else{
sum[j / 8].b = 1;
}
}
if( j % 8 == 2 ){
if( sum[j / 8].c== 1 ){
c = 1;
k = same(&num[0] , j );
if(k == -1){
num[m].shu = j;
m++;
}
else{
num[k].hao++;
}
}
else{
sum[j / 8].c = 1;
}
}
if( j % 8 == 3 ){
if( sum[j / 8].d == 1 ){
c = 1;
k = same(&num[0] , j );
if(k == -1){
num[m].shu = j;
m++;
}
else{
num[k].hao++;
}
}
else{
sum[j / 8].d = 1;
}
}
if( j % 8 == 4 ){
if( sum[j / 8].e == 1 ){
c = 1;
k = same(&num[0] , j );
if(k == -1){
num[m].shu = j;
m++;
}
else{
num[k].hao++;
}
}
else{
sum[j / 8].e = 1;
}
}
if( j % 8 == 5 ){
if( sum[j / 8].f == 1 ){
c = 1;
k = same(&num[0] , j );
if(k == -1){
num[m].shu = j;
m++;
}
else{
num[k].hao++;
}
}
else{
sum[j / 8].f = 1;
}
}
if( j % 8 == 6 ){
if( sum[j / 8].a == 1 ){
c = 1;
k = same(&num[0] , j );
if(k == -1){
num[m].shu = j;
m++;
}
else{
num[k].hao++;
}
}
else{
sum[j / 8].g = 1;
}
}
if( j % 8 == 7 ){
if( sum[j / 8].h == 1 ){
c = 1;
k = same(&num[0] , j );
if(k == -1){
num[m].shu = j;
m++;
}
else{
num[k].hao++;
}
}
else{
sum[j / 8].h = 1;
}
}
}
if(c == 0){
printf("No duplication");
}
else{
for(i = 0 ; i < n ; i ++){
if(sum[i].a == 1){
k = same(&num[0] , i * 8 + 0);
if(k != -1){
printf("%02ld-%03ld %d\n" , num[k].shu / 1000 , num[k].shu%1000 , num[k].hao + 2);
}
}
if(sum[i].b == 1){
k = same(&num[0] , i * 8 + 1);
if(k != -1){
printf("%02ld-%03ld %d\n" , num[k].shu / 1000 , num[k].shu%1000 ,num[k].hao + 2);
}
}
if(sum[i].c == 1){
k = same(&num[0] , i * 8 + 2);
if(k != -1){
printf("%02ld-%03ld %d\n" , num[k].shu / 1000 , num[k].shu%1000 , num[k].hao + 2);
}
}
if(sum[i].d == 1){
k = same(&num[0] , i * 8 + 3);
if(k != -1){
printf("%02ld-%03ld %d\n" , num[k].shu / 1000 , num[k].shu%1000 , num[k].hao + 2);
}
}
if(sum[i].e == 1){
k = same(&num[0] , i * 8 + 4);
if(k != -1){
printf("%02ld-%03ld %d\n" , num[k].shu / 1000 , num[k].shu%1000 , num[k].hao + 2);
}
}
if(sum[i].f == 1){
k = same(&num[0] , i * 8 + 5);
if(k != -1){
printf("%02ld-%03ld %d\n" , num[k].shu / 1000 , num[k].shu%1000 , num[k].hao + 2);
}
}
if(sum[i].g == 1){
k = same(&num[0] , i * 8 + 6);
if(k != -1){
printf("%02ld-%03ld %d\n" , num[k].shu / 1000 , num[k].shu%1000 , num[k].hao + 2);
}
}
if(sum[i].h == 1){
k = same(&num[0] , i * 8 + 7);
if(k != -1){
printf("%02ld-%03ld %d\n" , num[k].shu / 1000 , num[k].shu%1000 , num[k].hao + 2);
}
}
}
}
return 0;
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator