• UVA12716-连续区间内反向寻因子法


    在涉及的题目中如果需要使用连续区间内的数据的因数,可以放弃使用%这种低效的方案,从因数的角度进行,UVA12716中对于代码的优化就利用了这个小技巧。

    原题:https://vjudge.net/problem/UVA-12716

    代码如下:

     1 #include<iostream>
     2 #include<algorithm>
     3 #include<cstdio>
     4 #include<cstring>
     5 using namespace std;
     6 const int maxn =  30000000;
     7 int ans[maxn+10];
     8 
     9 int pre()
    10 {
    11     int b;
    12     memset(ans,0,sizeof(ans));
    13     ans[1]=0;
    14     for(int c=1;c<=maxn/2;++c)
    15     {
    16         for(int a=2*c;a<=maxn;a+=c)
    17         {
    18             if(c==(a xor (a-c)))++ans[a];
    19         }
    20     }
    21     for(int i=2;i<=maxn;i++)
    22         ans[i]+=ans[i-1];
    23     return 0;
    24 }
    25 
    26 
    27 int main()
    28 {
    29     //freopen("input.txt","r",stdin);
    30     //freopen("ans.txt","w",stdout);
    31     pre();
    32     //printf("ok
    ");
    33     int n;
    34     scanf("%d",&n);
    35     for(int i=1;i<=n;i++)
    36     {
    37         int p;
    38         scanf("%d",&p);
    39         printf("Case %d: %d
    ",i,ans[p]);
    40     }
    41     return 0;
    42 }

    关于具体的题目解析,紫书中讲解已经十分明确,在此不补充。

  • 相关阅读:
    lucene1.0.1写入分析
    esm数据迁移
    datadog入门
    elasticsearch datehistogram聚合
    cookie实战
    泛型编程
    lucene分析
    2020年12月阅读文章
    迭代
    lucene搜索
  • 原文地址:https://www.cnblogs.com/savennist/p/12248859.html
Copyright © 2020-2023  润新知