2012年1月11日 星期三

acm 10789: Prime Frequency

[心得] 0.004 
用一個MAP(255 ASCII 最大好像255)陣列,存每個字母出現次數,  如果出現次數大於2才需要判斷(用暴力法判斷是否為質數) ,1非質數

#include <stdio.h>
#include <stdbool.h>

int record;
bool isprime(int temp)
{
  int k;
  for(k=2;k<temp;k++)  
  {                  
      if(temp%k==0)
      {
         return false;
      }  
  }
  record =1;
  return  true;   
}
int main()
{

  int data,i,length,counter=0;
  bool flag= false;
 
  scanf("%d",&data);
  scanf("\n");
  while(data)
  {

     char s[2002];
     while(gets(s)!=NULL)
     {   
              
         int map[256]={0};
         record=0;
         data--;   
         counter++;
         length =strlen(s);
         printf("Case %d: ",counter);
        
         /*for(i=0;i<length;i++)
           printf("s[%d]= %c\n",i,s[i]);*/
        
         for(i=0;i<length;i++)
             map[s[i]]++; 
        
         /*for(i=0;i<255;i++)
           printf("map[%d]= %d\n",i,map[i]); */
                                     
         for(i=0;i<255;i++)                
         {
             if(map[i]>=2)                             
                flag = isprime(map[i]);
             if(flag)
             {
                printf("%c",i);
                flag =false;
             }
          }
          if(!record)
             printf("empty\n");
          else
             printf("\n"); 
      }                   

  }
   
   
 system("pause");
 return 0;   
}

沒有留言:

張貼留言