HDU 1098 HDOJ 1098 Ignatius's puzzle ACM 1098 IN HDU

 

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

 

题目地址:

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

题目分析:

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

代码如下 :

代码
/*
Mail to   : [email protected]
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 ;
}

 

 

你可能感兴趣的:(ACM)