escription

Lfx在复习离散的时候突然想到了一个算法题,毕竟是lfx,

算法题如下:

他想知道这样的问题,先定义1~n中即是3的倍数,又是11的倍数的那些数的和sum,

他想知道sum有多少个质因子,以及1~sum-1中有多少个数与sum互质?

1<= N <= 1e6

输入:

一个整数n

输出

两个整数,分别代表sum质因子的数量以及1~sum-1中与sum互质的数量。

思路:

先1~n扫一下求sum值,然后用唯一分解定理求质因子的数量,用欧拉函数求互质的数量。

唯一分解定理的步骤:

先打一个素数表,方法有很多种,然后用已知的素数去分解数值。

对于一个数x,小于x并与x互质的数的数量就是欧拉函数的定义,一个数论函数,很基础。

不知道的新名词应该去学习一下。

细节见代码:

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
#include <queue>
#include <stack>
#include <map>
#include <set>
#include <vector>
#include <iomanip>
#define ALL(x) (x).begin(), (x).end()
#define rt return
#define dll(x) scanf("%I64d",&x)
#define xll(x) printf("%I64d\n",x)
#define sz(a) int(a.size())
#define all(a) a.begin(), a.end()
#define rep(i,x,n) for(int i=x;i<n;i++)
#define repd(i,x,n) for(int i=x;i<=n;i++)
#define pii pair<int,int>
#define pll pair<long long ,long long>
#define gbtb ios::sync_with_stdio(false),cin.tie(0),cout.tie(0)
#define MS0(X) memset((X), 0, sizeof((X)))
#define MSC0(X) memset((X), '\0', sizeof((X)))
#define pb push_back
#define mp make_pair
#define fi first
#define se second
#define eps 1e-6
#define gg(x) getInt(&x)
#define db(x) cout<<"== [ "<<x<<" ] =="<<endl;
using namespace std;
typedef long long ll;
ll gcd(ll a,ll b){return b?gcd(b,a%b):a;}
ll lcm(ll a,ll b){return a/gcd(a,b)*b;}
ll powmod(ll a,ll b,ll MOD){ll ans=;while(b){if(b%)ans=ans*a%MOD;a=a*a%MOD;b/=;}return ans;}
inline void getInt(int* p);
const int inf=0x3f3f3f3f;
/*** TEMPLATE CODE * * STARTS HERE ***/
const int maxn = 1e6+;
bool noprime[maxn+];
vector <int> p;
int getPrime()
{
// 华丽的初始化
memset(noprime,false,sizeof(noprime));
p.clear(); int m=(int)sqrt(maxn+0.5);
// 多姿的线性筛
for(int i=;i<=m;i++)
{
if(!noprime[i])
{
for(int j=i*i;j<=maxn;j+=i)
{
noprime[j] = true;
}
}
}
// 把素数加到vector里
for(int i=;i<=maxn;i++)
{
if(!noprime[i])
{
p.push_back(i);
}
}
//返回vector的大小
return p.size(); }
int pf[][];// 0 -> value 1->count int getPrifac( ll n,int len)
{
int pos = ;
for(int i=; p[i]*p[i]<=n&&i<len;i++)
{
if( n% p[i] == )
{
pf[++pos][]=p[i];
pf[pos][]=;
// 算质因数的幂数
while(n%p[i]==)
{
pf[pos][]++;
n/=p[i];
}
}
}
if( n> )
{
pf[++pos][] = n;
pf[pos][]=;
}
return pos; // 优美的返回有多少个质因数
// 1~pos
}
ll euler(ll n) { //log(n)时间内求一个数的欧拉值
ll ans = n;
for (ll i = ; i*i <= n; i++) {
if (n%i == )
{
ans -= ans / i;
while (n%i == ) n /= i;
}
}
if (n>) ans -= ans / n;
return ans;
}
int main()
{
int len=getPrime();
int n;
gg(n);
ll cnt=0ll;
repd(i,,n)
{
if((i%==)&&(i%==))
{
cnt+=i;
}
}
// db(cnt);
int num=getPrifac(cnt,len);
printf("%d ",num);
printf("%lld\n",euler(cnt) ); return ;
} inline void getInt(int* p) {
char ch;
do {
ch = getchar();
} while (ch == ' ' || ch == '\n');
if (ch == '-') {
*p = -(getchar() - '');
while ((ch = getchar()) >= '' && ch <= '') {
*p = *p * - ch + '';
}
}
else {
*p = ch - '';
while ((ch = getchar()) >= '' && ch <= '') {
*p = *p * + ch - '';
}
}
}

1171: lfx捧杯稳啦!的更多相关文章

  1. [每日电路图] 9、介绍一种低价简单的4.2V锂电池充电及稳压(LDO)电路——RT9193,SD8017

    消费类电子电路图设计中往往会涉及到4.2V锂离子电池充电电路.及4.2V转3.3V的LDO稳压电路,这里分享一种简单.便宜的设计方案: RT9193 300mA,Ultra-Low Noise,Ult ...

  2. 1171. Lost in Space

    http://acm.timus.ru/problem.aspx?space=1&num=1171 一天的时间,WA了N遍,居然是因为数组开小了呀,我勒个去!鄙视自己...... 我是从第 1 ...

  3. [专业名词·硬件] 2、DC\DC、LDO电源稳压基本常识(包含基本原理、高效率模块设计、常见问题、基于nRF51822电源管理模块分析等)·长文

    综述先看这里 第一节的1.1简单介绍了DC/DC是什么: 第二节是关于DC/DC的常见的疑问答疑,非常实用: 第三节是针对nRF51822这款芯片电源管理部分的DC/DC.LDO.1.8的详细分析,对 ...

  4. [专业名词·硬件] 1、等效串联电阻ESR概述及稳压电路中带有一定量ESR电容的好处

        一.等效串联电阻ESR概述 ESR是Equivalent Series Resistance的缩写,即“等效串联电阻”.理想的电容自身不会有任何能量损失,但实际上,因为制造电容的材料有电阻,电 ...

  5. 【BZOJ-2892&1171】强袭作战&大sz的游戏 权值线段树+单调队列+标记永久化+DP

    2892: 强袭作战 Time Limit: 50 Sec  Memory Limit: 512 MBSubmit: 45  Solved: 30[Submit][Status][Discuss] D ...

  6. [家里蹲大学数学杂志]第033期稳态可压Navier-Stokes方程弱解的存在性

    1. 方程  考虑 $\bbR^3$ 中有界区域 $\Omega$ 上如下的稳态流动: $$\bee\label{eq} \left\{\ba{ll} \Div(\varrho\bbu)=0,\\ \ ...

  7. HDU 1171 Big Event in HDU 多重背包二进制优化

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1171 Big Event in HDU Time Limit: 10000/5000 MS (Jav ...

  8. hdu(1171)多重背包

    hdu(1171) Big Event in HDU Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/32768 K (J ...

  9. hdu 01背包汇总(1171+2546+1864+2955。。。

    1171 题意比较简单,这道题比较特别的地方是01背包中,每个物体有一个价值有一个重量,比较价值最大,重量受限,这道题是价值受限情况下最大,也就值把01背包中的重量也改成价值. //Problem : ...

随机推荐

  1. Windows Server 2016-配置Windows Defender防病毒排除项

    Windows Server 2016 的计算机上的 Windows Defender 防病毒自动注册你在某些排除项,由你指定的服务器角色定义. 这些排除项不会显示在Windows 安全中心应用中所示 ...

  2. jdk旧版本下载

    如何找到旧版本的jdk: 1.去oracle官网关于下载jdk的这一板块,https://www.oracle.com/technetwork/java/javase/downloads/index. ...

  3. 百度云资源下载加速软件推荐:proxyee-down

    百度云是个好东西(现在叫百度网盘不过我还是习惯叫百度云),2个T的免费容量可以存视频.软件包等各式文件,就是下载速度有点让人看不下去,不开会员的话就算你是百兆光纤还是量子通信都是被限速的,做为一个商业 ...

  4. sboot mybatis

    https://www.cnblogs.com/lspz/p/6723603.html spring.datasource.url=jdbc:mysql://10.46.52.205:3306/tes ...

  5. NGINX Load Balancing - HTTP Load Balancer

    This chapter describes how to use NGINX and NGINX Plus as a load balancer. Overview Load balancing a ...

  6. (转)Spring Boot (十):邮件服务

    http://www.ityouknow.com/springboot/2017/05/06/spring-boot-mail.html Spring Boot 仍然在狂速发展,才几个多月没有关注,现 ...

  7. Java基础知识点(一)

    前言:本篇随笔,主要记录Java的基础知识点,不管是用于项目或者面试中,笔者认为都非常有用,所以将持续更新...... 1.Java的访问权限 Java中有四种访问权限:默认访问权限.public.p ...

  8. POJ 3970(最小公倍数LCM)

    版权声明:Site:https://skyqinsc.github.io/ https://blog.csdn.net/u013986860/article/details/26182055  知 ...

  9. Bean named '*' must be of type [*], but was actually of type []

    本地Service 名字和调用别的maven项目Service重名

  10. 【CTF杂项】常见文件文件头文件尾格式总结及各类文件头

    文件头文件尾总结 JPEG (jpg), 文件头:FFD8FF 文件尾:FF D9PNG (png), 文件头:89504E47 文件尾:AE 42 60 82GIF (gif), 文件头:47494 ...