题目描述

   BG 有一块细长的蛋糕,长度为 n。
  有一些人要来 BG 家里吃蛋糕, BG 把蛋糕切成了若干块(整数长度),然后分给这些人。
  为了公平,每个人得到的蛋糕长度和必须相等,且必须是连续的一段。
  但是, BG 并不知道要有多少人来。 他只知道, 来的人数为n的约数,且小于n。

  显然把蛋糕平均分成 n 块一定能满足要求。但是, BG 想要分出的块数尽量少。现在 BG
  想知道,他要把蛋糕分成至少多少块,才能使得不管多少人来都能满足要求。

输入格式

  输入文件名为 cake.in。
  输入共一个整数 n,表示蛋糕的长度。

输出格式

  输出文件名为 cake.out。
  输出共一个整数, 表示分出的最少块数。

样例输入1

  6

样例输出1

  4

样例输入2

  15

样例输出2

  7

题目分析

  拿15的分割为例子:

    

   可以看出切割处均为15的约数(在15处会出现重叠),

  若设 f(x) 表示15中x的倍数有几个,则答案应为

  $$ans = f(3) + f(5) - f(15) $$

  其实就是n - 小于n且与n互质的数---->欧拉函数

  欧拉函数$\phi$(n) : $\phi$(n) 表示[1, n]中与 n 互质的整数的个数。

  主要公式: $$phi(n) = n · \prod_{p \in P} \frac{p - 1}{p}$$

  欧拉函数有两种求法:

  • 多个数的欧拉函数
void sieve() {
phi[] = ;
for (int i = ; i < N; ++i) {
if (!pr[i])
prime[pn++] = pr[i] = i, phi[i] = i - ;
for (int j = ; j < pn; ++j) {
int k = i * prime[j];
if (k >= N) break;
pr[k] = prime[j];
if (i % prime[j] == ) {
phi[k] = phi[i] * prime[j];
break;
} else
phi[k] = phi[i] * (prime[j] - );
}
}
}
  • 求一个数的欧拉函数
    p = ans = n;
for(int i = ; i * i <= p; i++){
if(p % i == ) ans = ans / i * (i - ) ;
while(p % i == ) p /= i;
}
if(p != )
ans = ans / p *(p - ) ;

  本题只需求一个值。

CODE

#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<string>
#include<cmath>
#include<algorithm>
using namespace std; int phi;
int ans;
int n, p; int main(){
cin>>n;
p = ans = n;
for(int i = ; i * i <= p; i++){
if(p % i == ) ans = ans / i * (i - ) ;
while(p % i == ) p /= i;
}
if(p != )
ans = ans / p *(p - ) ;
cout<<n - ans;
return ;
}

NOIP模拟:切蛋糕(数学欧拉函数)的更多相关文章

  1. 【BZOJ4173】数学 欧拉函数神题

    [BZOJ4173]数学 Description Input 输入文件的第一行输入两个正整数 . Output 如题 Sample Input 5 6 Sample Output 240 HINT N ...

  2. 【BZOJ-4173】数学 欧拉函数 + 关于余数的变换

    4173: 数学 Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 306  Solved: 163[Submit][Status][Discuss] D ...

  3. [bzoj]2705: [SDOI2012]Longge的问题[数论][数学][欧拉函数][gcd]

    [bzoj]P2705 OR [luogu]P2303 Longge的问题 Description Longge的数学成绩非常好,并且他非常乐于挑战高难度的数学问题.现在问题来了:给定一个整数N,你需 ...

  4. 数学(欧拉函数):UVAOJ 11426 GCD - Extreme (II)

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAB4AAAAQ4CAIAAABnsVYUAAAgAElEQVR4nOzdPW7zvII/bG1gCi9gKq ...

  5. bzoj 2705 数学 欧拉函数

    首先因为N很大,我们几乎不能筛任何东西 那么考虑设s(p)为 gcd(i,n)=p 的个数,显然p|n的时候才有意义 因为i与n的gcd肯定是n的因数,所以那么可得ans=Σ(p*s(p)) 那么对于 ...

  6. Luogu P2158 [SDOI2008]仪仗队【数学/欧拉函数】by cellur925

    题目描述 作为体育委员,C君负责这次运动会仪仗队的训练.仪仗队是由学生组成的N * N的方阵,为了保证队伍在行进中整齐划一,C君会跟在仪仗队的左后方,根据其视线所及的学生人数来判断队伍是否整齐(如下图 ...

  7. Acwing-201-可见的点(数学, 欧拉函数)

    链接: https://www.acwing.com/problem/content/description/203/ 题意: 在一个平面直角坐标系的第一象限内,如果一个点(x,y)与原点(0,0)的 ...

  8. UVaLive 7362 Farey (数学,欧拉函数)

    题意:给定一个数 n,问你0<= a <=n, 0 <= b <= n,有多少个不同的最简分数. 析:这是一个欧拉函数题,由于当时背不过模板,又不让看书,我就暴力了一下,竟然A ...

  9. 数学之欧拉函数 &几道poj欧拉题

    欧拉函数总结+证明 欧拉函数总结2 POJ 1284 原根 #include<iostream> #include<cstdio> #include<cstring> ...

随机推荐

  1. Caused by: org.springframework.beans.NotWritablePropertyException: Invalid property 'URIType' of bean class [com.alibaba.citrus.service.uribroker.uri.GenericURIBroker]

    linux中的JDK为JDK8,tomcat为tomcat8 加入dubbo.war包 启动报错! Caused by: org.springframework.beans.factory.BeanC ...

  2. */美女镇楼/*>>>---PHP中的OOP-->面对过程与面对对象基础概念与内容--(封装、继承、多态)

      前  言  OOP  学习了好久的PHP,今天来总结一下PHP中的重要成员OOP 1  面向过程&面向对象 1.专注于解决一个问题的过程.面向过程的最大特点,是由一个一个的函数去解决处理这 ...

  3. 实时监控、直播流、流媒体、视频网站开发方案流媒体服务器搭建及配置详解:使用nginx搭建rtmp直播、rtmp点播、,hls直播服务配置详解

    注意:这里不会讲到nginx流媒体模块如何安装的问题,只研究rtmp,hls直播和录制相关的nginx服务器配置文件的详细用法和说明.可以对照这些命令详解配置nginx -rtmp服务 一.nginx ...

  4. windows手动搭建Kotlin命令行环境

    kotlin官网:https://kotlinlang.org 我们可以从GitHub下载.目前最新版本是1.1.2-5 https://github.com/JetBrains/kotlin/rel ...

  5. Ubuntu下Tomcat初始配置

    1.下载tomcat安装包 从tomcat官方网站http://tomcat.apache.org下载安装包,然后解压到某个目录,比如: ~/opt/apache-tomcat-7.0.63官方文档中 ...

  6. docker registry私有仓库部署

    私有仓库服务端:12.40[root@centos7_golang ~]# docker run -d -p 5000:5000 -v /opt/data/registry:/tmp/registry ...

  7. javascript所有的节点和方法

    属性: 1.Attributes 存储节点的属性列表(只读) 2.childNodes 存储节点的子节点列表(只读) 3.dataType 返回此节点的数据类型 4.Definition 以DTD或X ...

  8. 手机cpu结构,arm

    问题描述 今天测试人员测试集成版本时除了一个bug:关于华为 Mate 8手机Android 6.0系统运行刚刚提测的版本时,出现闪退的bug,而小米 4 手机Android 6.0系统却没有出现任何 ...

  9. python迭代器生成器(二)

    其他内置类型迭代器 除了文件以及列表这样的实际的序列外,其他类型也有适合的迭代器. 遍历字典的经典方法是明确的获取其键的列表. 在最近的python版本中,字典有一个迭代器,在迭代环境中,会自动一次返 ...

  10. 第一个spark+scala程序

    import org.apache.spark._import SparkContext._import java.util.{Calendar,Properties,Date,Locale}impo ...