zoukankan      html  css  js  c++  java
  • 【数论,水题】UVa 11728

    题目链接

    题意:给出一个数S,求一个最大的数,使这个数所有的因子之和为S;

    这个所谓“因子之和”不知道有没有误导性,因为一开始以为得是素数才行。后来复习了下小学数学,比如12的因子分别是1,2,3,4,6,12...

    我竟无言以对T^T...

    感觉复杂度应该能继续优化的。。没想到好的。。

    代码:

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<cstdlib>
     4 #include<cstring>
     5 #include<cmath>
     6 using namespace std;
     7 const int maxn = 1010;
     8 int vis[maxn], prime[maxn], cnt;
     9 void pre()
    10 {
    11     int m = sqrt(maxn+0.5);
    12     vis[0] = 1;
    13     vis[1] = 1;
    14     for(int i = 2; i <= m; i++)
    15         if(!vis[i])
    16             for(int j = i*i; j < maxn; j+=i)
    17                 vis[j] = 1;
    18     cnt = 0;
    19     for(int i = 2; i < maxn; i++)
    20         if(!vis[i])
    21             prime[cnt++] = i;
    22 }
    23 
    24 int main()
    25 {
    26     pre();
    27     int S, kase = 0;
    28     while(~scanf("%d", &S) && S)
    29     {
    30         if(S == 1) {printf("Case %d: 1
    ", ++kase); continue;}
    31         bool exist = false;
    32         int i;
    33         for(i = S-1; i >= 1; i--)
    34         {
    35 //            if(!vis[i])
    36 //            {
    37                 //cout << i << endl;
    38                 int sum = 0; bool ok = true;
    39                 for(int j = 1; j <= sqrt(i); j++)
    40                 {
    41                     int tmp = i/j;
    42                     //cout << tmp << endl;
    43                     if(sum > S) {ok = false; break;}
    44                     if(tmp*j != i) continue;
    45                     if(tmp != j) sum += j;
    46                     sum += tmp;
    47                 }
    48                 if(sum == S) {exist = true; break;}
    49 //            }
    50         }
    51         if(exist) printf("Case %d: %d
    ", ++kase, i);
    52         else printf("Case %d: -1
    ", ++kase);
    53 
    54     }
    55     return 0;
    56 }
    View Code
  • 相关阅读:
    学习源代码时的笨方法
    初步学习pg_control文件之十五
    初步学习pg_control文件之十四
    初步学习pg_control文件之十三
    fsync体会
    初步学习pg_control文件之十二
    初步学习pg_control文件之十一
    初步学习pg_control文件之十
    初步学习pg_control文件之九
    JS与原生OC/Swift相互调用总结
  • 原文地址:https://www.cnblogs.com/LLGemini/p/4355560.html
Copyright © 2011-2022 走看看