hdoj 4196 Remoteland(筛素数+奇偶判断)

news/2024/7/10 3:43:56 标签: 优化

【题目大意】:找一个数D,是一个平方数,且他是由<=n中的若干个数构成。D要尽可能大,求D是多少。答案mod  1000000007


【解题思路】.:这道题兜了一个大圈,其实写写就会发现其实是找一个最大的平方数使得这个数是n!的除数。。。

        然后,这道题就变得简单了。。。。。。。。

         筛一次素数,然后求n!每一个素数出现多少次,出现偶数次的必然是D的因子,出现奇数次的,由于是该素数必定小于等于n只要除去该素数之后其他也必定属于D

         所以,筛素数+快速幂...然后无情的TLE TLE TLE TLE,试过了输入挂,试过了筛两次素数,其实自己也心知肚明问题出在快速幂那里。。。

想不出的时候,就要YY  -_-!!!!!

          然后,我发现,其实在筛素数的时候可以顺便把合数累乘起来,保存在一个数组中,以后每发现出现偶数次的质因子就补乘上该质数即可。在筛素数O(n)的时候顺便预处理了,避免了快速幂....也许是我能想到的优化不多,瞬间发现这个优化确实很有效。

  

【代码】:

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <vector>
#include <queue>
#include <cmath>
#include <string>
#include <cctype>
#include <map>
#include <iomanip>
                   
using namespace std;
                   
#define eps 1e-8
#define pi acos(-1.0)
#define inf 1<<30
#define linf 1LL<<60
#define pb push_back
#define lc(x) (x << 1)
#define rc(x) (x << 1 | 1)
#define lowbit(x) (x & (-x))
#define ll long long
#define mod 1000000007

bool is[10000100];
int prm[2001000];
int anss[10000100];
int cnt,num,n;

int get_prime(int n)
{
	ll i,j,k=0;
	anss[0]=anss[1]=1;
    for (i=2; i<=n; i++) {
        anss[i]=anss[i-1];
	   if (!is[i])
	   {
	      prm[k++]=i;
	      for (j=i*i; j<=n; j+=i)
	          is[j]=1; 
	   }
       else anss[i]=anss[i]*i%mod;
    }
	return k;                   
}

int main() {
    num=get_prime(10000010);
     while (~scanf("%d",&n)){
        if (n==0) break;
        ll ans=anss[n];
        for (int i=0; i<num && prm[i]<=n; i++){
            int tmp=n;
            int cnt=0;
            while (tmp){
                cnt+=tmp/prm[i];
                tmp/=prm[i];
            }
            if (cnt%2==0) ans=ans*prm[i]%mod;
        }
        printf("%I64d\n",ans);
    }
    return 0;
}



                               


http://www.niftyadmin.cn/n/970785.html

相关文章

Uber 开源深度学习分布训练库 Petastorm

百度智能云 云生态狂欢季 热门云产品1折起>>> Uber 近日宣布开源 Petastorm&#xff0c;这是由 Uber ATG 开发的数据访问库&#xff0c;可直接基于数 TB 的 Apache Parquet 格式数据集进行单机或分布式训练和深度学习模型评估。Petastorm支持流行的基于Python的机器…

hdoj 4195 Regular Convex Polygon(余弦定理+正凸多边形性质)

【题目大意】&#xff1a;给你三个顶点&#xff0c;这三个点是一个正多边形上的顶点&#xff0c;问该正多边形的顶点有几个。 【解题思路】&#xff1a;三个点&#xff0c;三角形-->外接圆-->必定也是该凸多边形的外接圆- 设顶点数为i&#xff0c;我们只要知道&#xff0…

安卓手机--键盘谈起后 fixed背景图片被键盘顶起的问题

参考文章&#xff1a; vue写法&#xff1a; <div class"main" :style"{ height: bodyHeight px }"> </div> mounted(){this.bodyHeightdocument.documentElement.clientHeight } jq写法&#xff1a; var bodyHeight document.documentElemen…

Google修复Chrome三个重要安全漏洞

google周三发布了Chrome最新稳定版的修复补丁&#xff0c;这个补丁修复了此前版本中Chrome的Javascript和Java插件漏洞&#xff0c;google同时修复了软件中的其他三个安全漏洞。google浏览器Chrome最新的稳定版本为4.1.249.1059&#xff0c;在Sun的Java插件Version6.Update20中…

poj 3080 Flying Right(贪心+优先队列)

【题目大意】&#xff1a;有一架坐位固定的飞机&#xff0c;每天早上从&#xff11;号点飞到&#xff2e;号点&#xff0c;晚上从&#xff2e;号点飞回上号点&#xff0c;中途有些点会有人上飞机&#xff0c;在保证不超载的情况下求一天下来&#xff0c;能载的最多乘客数。 【解…

金山毒霸样本上报页面功能更新,欢迎试用

金山安全中心&#xff08;www.pc120.com&#xff09;中“样本上报”页面在2010年5月5日下午18&#xff1a;00更新上线。其中主要更新内容为&#xff1a;新增&#xff1a; 对于“误报文件”的手动上报支持。 支持通过“上报号”查询鉴定结果。 上报后邮件通知用户功能。优化&…

poj 1042 Gone Fishing(DP)

【题目大意】&#xff1a;john现有h个小时的空闲时间&#xff0c;他打算去钓鱼。john钓鱼的地方共有n个湖&#xff0c;所有的湖沿着一条单向路顺序排列&#xff08;john每在一个湖钓完鱼后&#xff0c;他只能走到下一个湖继续钓&#xff09;&#xff0c;john必须从1号湖开始钓起…

创造良好环境 工业机器人领域有望获重点扶持

11月7日&#xff0c;中国工业机器人高峰论坛在中国工博会期间召开&#xff0c;工信部装备司副司长王卫明在上海表示&#xff0c;中国工业机器人市场已经从示范性推广到全面运用&#xff0c;工业机器人将作为重点支持领域。对于机器人领域的驱动器、电机、减速器三方面核心关键部…