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

Re:who can help me

Posted by zs20043490 at 2006-04-14 19:17:52
In 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:
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