⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 p3.c

📁 acm大赛题
💻 C
字号:
/// P3

#include <stdio.h>
#include <stdlib.h>
#include <math.h>


void maxmin( int d[], int n, int *max, int *min) {
   int i;

   *max = 0;
   *min = 9999999;

   for( i=0; i<n; ++i) {
      if( d[i] > *max)
         *max = d[i];
      if( d[i] < *min)
         *min = d[i];
   }
}

int tenPower( int n) {
   int result = 1;
   for( ; n>0; --n)
      result *= 10;
   return result;
}

int upTo125( int n) {
   int ndigit, i, n1;
   int m = n;

   ndigit = 1;
   while( m > 10) {
      ++ndigit;
      m /= 10;
   }

   n1 = tenPower( ndigit-1);

   if( n == n1)
      return n1;
   else if( n <= 2 * n1)
      return 2 * n1;
   else if( n <= 5 * n1)
      return 5 * n1;
   else
      return 10 * n1;
}

void formalize( int min, int max, int *lo, int *nstep, int *m) {
   int istep = (int) ceil( (max - min) / 20.0) ;

   *nstep = upTo125( istep);

   *lo = min - min % *nstep;

   *m = (int) ceil( (max - *lo) / *nstep) + 1;

   if( *m > 20) {
      *nstep = upTo125( *nstep * 2);
      *lo = min - min % *nstep;
      *m = (int) ceil( (max - *lo) / *nstep) + 1;
   }
}

int main(void) {
   int data[500];
   int max, min, range;
   int n, i, j;
//   int isFirstCase = 1;
   int lo, nstep, m;
   int count[20];

   scanf( "%d", &n);

   while ( n > 0) {
      for( i=0; i<n; ++i)
         scanf( "%d", &data[i]);

      maxmin( data, n, &max, &min);

/*     if( isFirstCase)
       isFirstCase = 0;
     else
       printf( "\n");
*/
      if( min == max) {
         printf( "All inputs equal %d.\n", min);
      } else {
         formalize( min, max, &lo, &nstep, &m);
         for( i=0; i<20; ++i)
            count[i] = 0;
         for( i=0; i<n; ++i)
            ++count[ (data[i]-lo) / nstep ];
         for( i=0; i<m; ++i) {
            printf( "%8d ", lo + i*nstep);
            for( j=0; j<count[i]; ++j)
               putchar( '#');
            putchar( '\n');
         }
      }

      printf( "\n");

      if( scanf( "%d", &n) != 1)
         exit(0) ;
   }

   return 0;
}

⌨️ 快捷键说明

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