POJ1012 Joseph 约瑟夫问题+枚举

Categories: 数据结构和算法
Comments: No Comments
Published on: 2011 年 03 月 22 日

网上搜哈希的题。。。有人说1012是哈希。。。果断被骗。不过水题还是A掉算了。自己写的果断超时,然后直接复制了打表的代码。以后就明白了,能打表时一定打表。

枚举的时候i只需枚举n(k+1)+1和n(k+1)的倍数即可,网上有人这么说,大家可以试试,我是抓紧时间A下题了。。

 

#include <stdio.h>  
int main()  
{  
    int k;  
    for(;;)  
    {  
        scanf("%d",&k);  
        if(!k)  
            break;  
        switch(k)  
        {  
        case 1:printf("2\n");break;  
        case 2:printf("7\n");break;  
        case 3:printf("5\n");break;  
        case 4:printf("30\n");break;  
        case 5:printf("169\n");break;  
        case 6:printf("441\n");break;  
        case 7:printf("1872\n");break;  
        case 8:printf("7632\n");break;  
        case 9:printf("1740\n");break;  
        case 10:printf("93313\n");break;  
        case 11:printf("459901\n");break;  
        case 12:printf("1358657\n");break;  
        case 13:printf("2504881\n");break;  
        }  
    }  
    return 0;  
}  
//#include <iostream>  
//using namespace std;  
//int main()  
//{  
//  int k,pos,sum,flag,temp;  
//  while(cin>>k)  
//  {  
//      if(k==0) break;  
//      sum=2*k-1;  
//      for (int i=k;;i++)  
//      {  
//          flag=1;  
//          pos=0;  
//          temp=sum+1;  
//          int j=0;  
//          while(j<k)  
//          {  
//              pos=(pos+i)%temp;  
//              if(pos<k) {flag=0;break;}  
//              j++;  
//              temp--;  
//          }  
//          if(flag)  
//          {  
//              cout<<i+1<<endl;break;  
//          }  
//      }  
//  }  
//} 

我猜你可能也喜欢:

No Comments - Leave a comment

Leave a comment

电子邮件地址不会被公开。 必填项已用*标注

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>


Welcome , today is 星期五, 2017 年 12 月 15 日