UVa 10837 (欧拉函数 搜索) A Research Problem
发现自己搜索真的很弱,也许做题太少了吧。代码大部分是参考别人的,=_=||
题意:
给出一个phi(n),求最小的n
分析:
回顾一下欧拉函数的公式:,注意这里的Pi是互不相同的素数,所以后面搜索的时候要进行标记。
先找出所有的素数p,满足(p - 1)整除题目中所给的phi(n)
然后暴搜。。
素数打表打到1e4就够了,如果最后剩下一个大素数单独进行判断。
#include <cstdio>
#include <cmath>
#include <cstring>
#include <algorithm>
using namespace std; const int maxn = ;
const int INF = ; int phi_n, ans; bool vis[maxn + ];
int prime[], pcnt = ;
int fac[], tot; void prime_table()
{
int m = sqrt(maxn + 0.5);
for(int i = ; i <= m; i++) if(!vis[i])
for(int j = i * i; j <= maxn; j += i) vis[j] = true;
for(int i = ; i <= maxn; i++) if(!vis[i]) prime[pcnt++] = i;
} void factor(int n)
{
tot = ;
for(int i = ; i < pcnt && (prime[i]-) * (prime[i]-) <= n; i++) if(n % (prime[i] - ) == )
fac[tot++] = prime[i];
} int judge(int n)
{
if(n == ) return ;
n++;
//判断剩余的phin中加1后是否为素数
for(int i = ; i < pcnt && prime[i] * prime[i] <= n; i++) if(n % prime[i] == )
return -;
//如果为素数的话,判断是否标记过
for(int i = ; i < tot; i++) if(vis[i] && n == fac[i])
return -;
return n;
} void dfs(int n, int phin, int d)
{
if(d == tot)
{
int t = judge(phin);
if(t > ) ans = min(ans, n * t);
return;
} dfs(n, phin, d+);
if(phin % (fac[d] - ) == )
{
vis[d] = true;
n *= fac[d];
phin /= (fac[d] - );
for(;;)
{
dfs(n, phin, d+);
if(phin % fac[d] != )
return;
phin /= fac[d]; n *= fac[d];
}
}
vis[d] = false;
} int main()
{
freopen("in.txt", "r", stdin); int kase = ;
prime_table();
while(scanf("%d", &phi_n) == && phi_n)
{
ans = INF;
memset(vis, false, sizeof(vis));
factor(phi_n);
dfs(, phi_n, );
printf("Case %d: %d %d\n", ++kase, phi_n, ans);
} return ;
}
代码君
UVa 10837 (欧拉函数 搜索) A Research Problem的更多相关文章
- 紫书 习题 10-18 UVa 10837 (欧拉函数变形)
这道题很巧妙,要把式子变一下 phi(n) = n * (1 - 1 / p1) * (1 - 1 / p2)--(1 - 1 / pr) = n * ((p1-1) / p1) * ((p1-2) ...
- UVa 11426 (欧拉函数 GCD之和) GCD - Extreme (II)
题意: 求sum{gcd(i, j) | 1 ≤ i < j ≤ n} 分析: 有这样一个很有用的结论:gcd(x, n) = i的充要条件是gcd(x/i, n/i) = 1,因此满足条件的x ...
- UVa 11440 (欧拉函数) Help Tomisu
题意: 给出N和M,统计区间x ∈ [2, N!],x满足所有素因子都大于M的x的个数. 分析: 首先将问题转化一下,所有素因子都大于M 等价于 这个数与M!互素 对于k大于M!,k与M!互素等价于 ...
- UVA 10820 欧拉函数模板题
这道题就是一道简单的欧拉函数模板题,需要注意的是,当(1,1)时只有一个,其他的都有一对.应该对欧拉函数做预处理,显然不会超时. #include<iostream> #include&l ...
- UVA 11426 (欧拉函数&&递推)
题意:给你一个数N,求N以内和N的最大公约数的和 解题思路: 一开始直接想暴力做,4000000的数据量肯定超时.之后学习了一些新的操作. 题目中所要我们求的是N内gcd之和,设s[n]=s[n-1] ...
- UVA - 11426 欧拉函数(欧拉函数表)
题意: 给一个数 N ,求 N 范围内所有任意两个数的最大公约数的和. 思路: f 数组存的是第 n 项的 1~n-1 与 n 的gcd的和,sum数组存的是 f 数组的前缀和. sum[n]=f[1 ...
- Trees in a Wood. UVA 10214 欧拉函数或者容斥定理 给定a,b求 |x|<=a, |y|<=b这个范围内的所有整点不包括原点都种一棵树。求出你站在原点向四周看到的树的数量/总的树的数量的值。
/** 题目:Trees in a Wood. UVA 10214 链接:https://vjudge.net/problem/UVA-10214 题意:给定a,b求 |x|<=a, |y|&l ...
- GCD - Extreme (II) UVA - 11426 欧拉函数_数学推导
Code: #include<cstdio> using namespace std; const int maxn=4000005; const int R=4000002; const ...
- Trees in a Wood UVA - 10214 欧拉函数模板
太坑惹,,,没用longlong各种WA #include <iostream> #include <string.h> #include <cstdio> #in ...
随机推荐
- wap开发使用jquery mobile之后页面不加载外部css样式文件/js文件
场景: wap开发,使用jquery mobile之后不会加载外部自定义的css文件了,需要手动刷新才会加载,查看外部自定义的js文件也是一样. 解决办法: 1.在page下面添加css样式,就不要写 ...
- SQL Server数据库事务日志存储序列
原文 原文:http://blog.csdn.net/tjvictor/article/details/5251351 如果你的数据库运行在完整或是批量日志恢复模式下,那么你就需要使用作业(job ...
- 出现错误:Unable to load configuration. - action - file:/E:/Java/Tomcat7.0/apache-tomcat-7.0.68-windows-x64/apache-tomcat-7.0.68/webapps/SSH2Integrate/WEB-INF/classes/struts.xml:8:43
严重: Exception starting filter struts2 Unable to load configuration. - action - file:/E:/Java/Tomcat7 ...
- 【WCF--初入江湖】04 WCF通信模式
04 WCF通信模式 WCF的通信模式有三种 [1]请求响应模式: 只能是客户端调用服务器; 客户端请求并等待服务器的响应后才继续执行后续操作(异步调用除外) [2]单工模式: 只能是客户端调用服务器 ...
- 灵魂有香气的女子IOS版本APP,近期将考虑开放源代码
实在太忙,灵魂有香气的女子这个App,断断续续开发了1个多月了,前后台自己独立完成, 由于接触swift没多久,还属于新手行列,不熟悉,希望大家给出意见, 根据意见,完善后将于近期将考虑开放swift ...
- Spring @ Component 的作用
1.@controller 控制器(注入服务) 2.@service 服务(注入dao) 3.@repository dao(实现dao访问) 4.@component (把普通pojo实例化到spr ...
- POJ3468 A Simple Problem With Integers 树状数组 区间更新区间询问
今天学了很多关于树状数组的技巧.一个是利用树状数组可以简单的实现段更新,点询问(二维的段更新点询问也可以),每次修改只需要修改2个角或者4个角就可以了,另外一个技巧就是这题,原本用线段树做,现在可以用 ...
- Class
1. No const constructor Unlike other member functions, constructors may not be declared as const . W ...
- autocomplete参数说明以及实例
JQuery autocomplete使用手册 Jquery autocomplete是一个很强大的类似google suggest的自动提示插件.它几乎可以满足我们所有的需要. 官方网站:http: ...
- Java 正则表达式的总结和一些小例子
字符串处理是许多程序中非常重要的一部分,它们可以用于文本显示,数据表示,查找键和很多目的.在Unix下,用户可以使用正则表达式的强健功能实现这些 目的,从Java1.4起,Java核心API就引入了j ...