toj_2804_1.cpp

来自「Tianjin University Online Judge 的80多道题目 」· C++ 代码 · 共 107 行

CPP
107
字号
/*InputThe input will contain multiple test cases. Each test case contains a single line with a single integer n, the number of vertices of the polygon. (3 ≤ n ≤ 10^1000)The input will be terminated by the end of file.OutputFor each corresponding n, output a single line with the number of guards needed( n / 3 )Sample Input510099999999999999999999Sample Output13333333333333333333333Problem Setter: nuanranSource: TJU Programming Contest 2007 Preliminary*/#include<cstdio>#include<cstring>#define MAXLEN 1010FILE *fIn = fopen( "toj_2804.in" , "r" );void scanfNum( char num[] , int & len , char& first , bool& flag ){  int i;  char in;  num[ 0 ] = first;  len = 1;  //  for (  in = getchar(); in != '\n'; in = getchar() , len++ )  for ( fscanf( fIn , "%c" , &in ); in != '\n' ; fscanf( fIn , "%c" , &in ) , len++ )    {      num[ len ] = in - '0';    }  if ( fscanf( fIn , "%c" , &first ) != EOF )    {      first = first - '0';      flag = true;    }  else    flag = false;}void converse( char num[] , int const len ){  int i , temp;  for ( i = 0; i <= len / 2; i++ )    {      temp = num[ i ];      num[ i ] = num[ len - 1 - i ];      num[ len - 1 - i ] = temp;    }    }void numDi3( char num[] , int const len ){  int i , base , residual , digit;  base = 3;  for ( residual  = 0 , i = len - 1 ; i >= 0 ; i-- )    {      digit = residual * 10 + num[ i ];      residual = digit % base;      num[ i ] = digit / base;    }}void printfNum( char num[] , int const len ){  int i;  if ( num[ len - 1 ] != 0 )    //    printf( "%c" , num[ len - 1 ] );    putchar( num[ len - 1 ] + '0' );  for ( i = len - 2; i >= 0; i-- )    {      putchar( num[ i ] + '0' );    }  putchar( '\n' );}        int main(){  char num[ MAXLEN ]  , first;  int len;  bool flag;  //  first = getchar() - '0';  fscanf( fIn , "%c" , first );  first -= '0';  flag = true;  while ( flag )    {      scanfNum( num , len , first , flag );      converse( num , len );      numDi3( num , len );      printfNum( num , len );    }  return 0;}      

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?