zoukankan      html  css  js  c++  java
  • Irrelevant Elements, ACM/ICPC NEERC 2004, UVa1635

     这种题目最重要的是思路了清晰

     1 #include <cstdio>
     2 #include <cstring>
     3 const int maxn = 100005;//sqrt(n)+1 is enough
     4 
     5 int fac[100][2];
     6 int fac_c[100];
     7 int a[maxn];
     8 void factor(int m) {
     9     int& num = fac[0][0];
    10     num = 0;
    11     for (int i = 2; i*i <= m; i++) {
    12         if(m%i == 0) {
    13             fac[++num][0] = i;
    14             fac[num][1] = 0;
    15             do {
    16                 fac[num][1]++;
    17                 m/= i;
    18             } while(m%i == 0);
    19         } 
    20     }
    21     if (m > 1) {
    22         fac[++num][0] = m;
    23         fac[num][1] = 1;
    24     }
    25 }
    26 bool check(int n, int j) {
    27     int num = fac[0][0];
    28     int a = n - j;
    29     int b = j;
    30     for (int i = 1; i <= num; i++) {
    31         //为了提高效率,只用检验m的分解式中的素因数
    32         int p = fac[i][0];
    33         int& q = fac_c[i];
    34         for (; a%p == 0; a/=p, q++);
    35         for (; b%p == 0; b/=p, q--);
    36     }
    37     for (int i = 1; i <= num; i++) {
    38         if (fac[i][1] > fac_c[i]) {
    39             return false;
    40         }
    41     }
    42     return true;
    43 }
    44 int main(void) {
    45     int n, m;
    46     for (; scanf("%d%d", &n, &m)==2;printf("
    ")) {
    47         int cnt = 0;
    48         factor(m);
    49         memset(fac_c, 0, sizeof(fac_c));
    50         for (int i = 1; i < n; i++) {
    51             if (check(n, i)) {
    52                 a[cnt++] = i+1;
    53             }
    54         }
    55         printf("%d
    ", cnt);
    56         for (int i = 0; i < cnt; i++) {
    57             printf("%s%d",i==0?"":" ", a[i]);
    58         }
    59     }
    60     return 0;
    61 }
    View Code
  • 相关阅读:
    python多线程实现抓取网页
    调用百度地图实如今地图上定位
    Java创建二叉树
    J2EE的13个规范
    现场故障 案例:控制文件损坏
    数据库原理常见问答
    Lucene整理--中文分词
    Linux发行版
    python中异常好用的工具
    python有趣的一行代码
  • 原文地址:https://www.cnblogs.com/zhaoyu1995/p/5753968.html
Copyright © 2011-2022 走看看