MiYu原创, 转帖请注明 : 转载自 ______________白白の屋       

 

题目地址:

     http://acm.hdu.edu.cn/showproblem.php?pid=1098

题目分析:

     纯粹的数学题, 数学归纳法的 应用  , 最后 归纳得出  原题等价与 18 + k*a 是否能被65整除.

代码如下 :

代码
/*
Mail to   : miyubai@gamil.com
My Blog   : www.baiyun.me
Link      : 
http://www.cnblogs.com/MiYu  || http://www.cppblog.com/MiYu
Author By : MiYu
Test      : 1
Complier  : g++ mingw32-3.4.2
Program   : HDU_1098
Doc Name  : Ignatius's puzzle
*/
//#pragma warning( disable:4789 )
#include <iostream>
#include 
<fstream>
#include 
<sstream>
#include 
<algorithm>
#include 
<string>
#include 
<set>
#include 
<map>
#include 
<utility>
#include 
<queue>
#include 
<stack>
#include 
<list>
#include 
<vector>
#include 
<cstdio>
#include 
<cstdlib>
#include 
<cstring>
#include 
<cmath>
#include 
<ctime>
using namespace std;
inline 
bool scan_d(int &num)
{
        
char in;bool IsN=false;
        
in=getchar();
        
if(in==EOF) return false;
        
while(in!='-'&&(in<'0'||in>'9')) in=getchar();
        
if(in=='-'){ IsN=true;num=0;}
        
else num=in-'0';
        
while(in=getchar(),in>='0'&&in<='9'){
                num
*=10,num+=in-'0';
        }
        
if(IsN) num=-num;
        
return true;
}
int main ()
{
    
int N;
    
while ( scan_d ( N ) ) {
        
if ( N % 65 == 0 )
            puts ( 
"no" );
        
else {
            
int i;
            
for ( i = 0; i < 65++ i ) {
                
if ( ( i * N + 18 ) % 65 == 0 ) {
                    printf ( 
"%d\n", i );
                    
break;
                }
            }
            
if ( i == 65 ) puts ( "no" );
        }
    }
    
return 0;
}

 

 

 posted on 2010-10-28 21:17  MiYu  阅读(488)  评论(0编辑  收藏  举报