zoukankan      html  css  js  c++  java
  • 寻找AP数

    题目背景

    正整数n是无穷的,但其中有些数有神奇的性质,我们给它个名字——AP数。

    题目描述

    对于一个数字i是AP数的充要条件是所有比它小的数的因数个数都没有i的因数个数多。比如6的因数是1 2 3 6 共计有4个因数。它就是一个AP数(1-5的因数个数不是2就是3)。我们题目的任务就是找到一个最大的,且不超过n的AP数。

    输入格式

    每个测试点可能拥有多组数据。

    对于每一行有一个n,如题目所描述

    输出格式

    对于每一行输出最大的且不超过n的AP数

    输入输出样例

    输入 #1
    1000
    输出 #1
    840

    说明/提示

    n<=15 0000 0000

    分析:

    这题要用到不少数学性质和证明,反正我记得这题我们老师讲了一下午,详细看https://www.luogu.org/problemnew/solution/P1820(话说这里面的题解(除了打表)好像都是我们班的。。。)

    CODE:

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<cmath>
     4 using namespace std;
     5 long long int n,ap,fap;
     6 const int p[11]={0,2,3,5,7,11,13,17,19,23,29};
     7 void work(int k,long long x,int fx,int limit){
     8     if (k>n) return ;
     9     if (fx>fap&&x<=n) fap=fx,ap=x;
    10     if (x<ap&&fx==fap) ap=x;
    11     for (int i=1;i<=limit;++i){
    12         x*=p[k];
    13         if (x>n) break;
    14         work(k+1,x,fx*(i+1),i);
    15     }
    16 }
    17 int main(){
    18     while(scanf("%d",&n)!=EOF){
    19         ap=fap=0;
    20         work(1,1,1,20);
    21         cout<<ap<<endl;
    22     }
    23     return 0;
    24 }
  • 相关阅读:
    Zend Studio使用
    iOS中block实现的探究
    用python演示一个简单的AST(抽象语法树)
    Cocos2D-x权威指南: CCNode类方法:
    ListView的优化
    可变參数
    android媒体--stagefright概述【一】
    flume安装及配置
    linux包之sysstat之mpstat与pidstat命令
    Java实现第十届蓝桥杯等差数列
  • 原文地址:https://www.cnblogs.com/kanchuang/p/11338986.html
Copyright © 2011-2022 走看看