zoukankan      html  css  js  c++  java
  • POJ 1142 Smith Numbers(分治法+质因数分解)

    http://poj.org/problem?id=1142

    题意:

    给出一个数n,求大于n的最小数,它满足各位数相加等于该数分解质因数的各位相加。

    思路:
    直接暴力。

     1 #include <iostream>  
     2 #include <cstring>  
     3 #include <algorithm>   
     4 #include <vector>
     5 #include <queue>
     6 #include <cmath>
     7 using namespace std;
     8 
     9 int n;
    10 
    11 int cacl(int x)
    12 {
    13     int sum = 0;
    14     while (x)
    15     {
    16         sum += x % 10;
    17         x /= 10;
    18     }
    19     return sum;
    20 }
    21 
    22 bool isprime(int x)
    23 {
    24     int m = sqrt(x + 0.5);
    25     for (int i = 2; i <= m; i++)
    26     {
    27         if (x%i == 0)  return false;
    28     }
    29     return true;
    30 }
    31 
    32 int solve(int x)
    33 {
    34     if (isprime(x))
    35         return cacl(x);
    36     else
    37     {
    38         int m = sqrt(x + 0.5);
    39         for (int i = m; i >1;i--)
    40         if (x%i == 0)
    41             return solve(i) + solve(x / i);
    42     }
    43 }
    44 
    45 int main()
    46 {
    47     //freopen("D:\input.txt", "r", stdin);
    48     while (~scanf("%d", &n) && n)
    49     {
    50         for (int i = n + 1;; i++)
    51         {
    52             if (!isprime(i) && cacl(i) == solve(i))
    53             {
    54                 printf("%d
    ", i);
    55                 break;
    56             }
    57         }
    58     }
    59     return 0;
    60 }
  • 相关阅读:
    D
    NOI 1.7编程基础之字符串(35题)
    HYSBZ 2145 悄悄话
    POJ 2406 Power Strings
    POJ 3461 Oulipo[附KMP算法详细流程讲解]
    POJ 3974 Palindrome
    POJ 1002 487-3279
    POJ 1182 食物链
    POJ 2524 Ubiquitous Religions
    HDU 1251 统计难题
  • 原文地址:https://www.cnblogs.com/zyb993963526/p/6667141.html
Copyright © 2011-2022 走看看