zoukankan      html  css  js  c++  java
  • UVa 10375 Choose and divide

    简单的分解质因数约分

      1 #include <cstdio>
      2 #include <cstdlib>
      3 #include <cstring>
      4 
      5 const int MAXN = 10000 + 10;
      6 
      7 bool Prime[MAXN];
      8 
      9 int aaa[5];
     10 int bbb[5];
     11 int num[2][MAXN];
     12 
     13 void GetPrime()
     14 {
     15     memset( Prime, true, sizeof(Prime) );
     16     Prime[0] = false ;
     17     Prime[1] = false ;
     18     for ( int i = 2; i < MAXN; i++ )
     19         if ( Prime[i] )
     20         {
     21             for ( int j = i * i; j < MAXN; j += i )
     22                 Prime[j] = false;
     23         }
     24     return;
     25 }
     26 
     27 int cmp( const void *a, const void *b )
     28 {
     29     return *(int *)a - *(int *)b;
     30 }
     31 
     32 int max( int a, int b )
     33 {
     34     return a > b ? a : b;
     35 }
     36 
     37 int min( int a, int b )
     38 {
     39     return a < b ? a : b;
     40 }
     41 
     42 void show()
     43 {
     44     for ( int i = 0; i < 20; i++ )
     45        printf("%d ", num[0][i]);
     46     puts("\n---------------------");
     47     for ( int i = 0; i < 20; i++ )
     48        printf("%d ", num[1][i]);
     49     puts("\n----------------");
     50     return;
     51 }
     52 
     53 int main()
     54 {
     55     GetPrime();
     56     int p, q, r, s;
     57     while ( scanf( "%d%d%d%d", &p, &q, &r, &s ) != EOF )
     58     {
     59         memset( num, 0, sizeof(num) );
     60 
     61         aaa[0] = p;
     62         aaa[1] = s;
     63         aaa[2] = r - s;
     64         bbb[0] = q;
     65         bbb[1] = r;
     66         bbb[2] = p - q;
     67         qsort( aaa, 3, sizeof(int), cmp );
     68         qsort( bbb, 3, sizeof(int), cmp );
     69 
     70 //        for ( int i = 0; i < 3; i++ ) printf("%d %d\n", aaa[i], bbb[i]);
     71 
     72         int down, up;
     73         for ( int i = 0; i < 3; i++ )
     74         {
     75             int xxx;
     76             if ( aaa[i] == bbb[i] ) continue;
     77             else if ( aaa[i] > bbb[i] )
     78             {
     79                 down = bbb[i] + 1;
     80                 up = aaa[i];
     81                 xxx = 0;
     82             }
     83             else
     84             {
     85                 down = aaa[i] + 1;
     86                 up = bbb[i];
     87                 xxx = 1;
     88             }
     89             for ( int i = down; i <= up; i++ )
     90             {
     91                 int tp = i;
     92     //            printf("tp = %d\n", tp);
     93                 int yyy = 2;
     94                 while ( tp != 1 )
     95                 {
     96                     if ( Prime[yyy] && tp % yyy == 0 )
     97                     {
     98       //                  printf("yyy = %d\n", yyy);
     99                         tp /= yyy;
    100                         ++num[xxx][yyy];
    101                     }
    102                     else ++yyy;
    103                 }
    104             }
    105         }
    106 
    107         for ( int i = 2; i < MAXN; i++ )
    108         if ( Prime[i] )
    109         {
    110             if ( num[0][i] > num[1][i] )
    111             {
    112                 num[0][i] -= num[1][i];
    113                 num[1][i] = 0;
    114             }
    115             else
    116             {
    117                 num[1][i] -= num[0][i];
    118                 num[0][i] = 0;
    119             }
    120         }
    121 
    122   //      show();
    123 
    124         double ans = 1.0;
    125         for ( int i = 2; i < MAXN; i++ )
    126             if ( Prime[i] )
    127             {
    128                 int fenzi = 1, fenmu = 1;
    129                 for ( int j = 0; j < num[0][i]; j++ ) fenzi *= i;
    130                 for ( int j = 0; j < num[1][i]; j++ ) fenmu *= i;
    131                 ans *= (double)fenzi/fenmu;
    132             }
    133 
    134         printf( "%.5lf\n", ans );
    135     }
    136     return 0;
    137 }
  • 相关阅读:
    Java操作excel,读取及导出
    vue 在package.json配置对外暴露访问地址(手机端访问本地项目地址)
    element UI upload组件上传附件格式限制
    linux之vim/vi快速复制多行内容的快捷键
    使用vant的Toast组件时提示not defined
    如何使用js判断当前页面是pc还是移动端打开的
    JavaScript 保留两位小数函数
    Linux其他命令
    linux学习ls的三个选项 lha的作用和隐藏文件的知识
    vue+ element-ui el-table组件自定义合计(summary-method)坑
  • 原文地址:https://www.cnblogs.com/GBRgbr/p/2704816.html
Copyright © 2011-2022 走看看