11.2 afternoon


#include<iostream>
#include<cstdio>
#define ll long long
using namespace std;
ll n,ans;
int main()
{
freopen("phi.in","r",stdin);
freopen("phi.out","w",stdout);
cin>>n;ans=n;
for(ll i=;i*i<=n;i++){
if(n%i==){
while(n%i==)n/=i;
ans=ans/i*(i-);
}
}
if(n>)ans=ans/n*(n-);
cout<<ans<<endl;
fclose(stdin);fclose(stdout);
return ;
}
暴力40不粘了
正解很好的思路
/*
公式变形 F[n]=p1^(a1-1)*(p1-1) + p2^(a2-1)*(p2-1) + ....
Dfs 每个 p a
如果剩下一项 p-1 p是素数 就不用再分解了
可以特判掉 判断比较大的数是不是素数 这里用的 Miller Rabin 或者 Fermat
这不是重点 说不定sqrt暴力判常熟写的小一点也能过 没试过233 还有一点就是 为什么 x+1>prime[num]的时候才直接放进去
一开始认为的是防止小的多次统计 但是去重之后答案还是不对
似乎还有什么没有想到的 如果有大神想到了为什么 欢迎留言
*/
#include<cstdio>
#include<ctime>
#include<iostream>
#include<cstdlib>
#include<algorithm>
#define ll long long
#define maxn 100010
#define C 10000000
using namespace std;
ll n,k,prime[C/],num,ans[maxn];
bool f[C+];
void Get(){
int x=min((ll)C,n*);
for(int i=;i<=x;i++){
if(f[i]==)prime[++num]=i;
for(int j=;j<=num;j++){
if(i*prime[j]>x)break;
f[i*prime[j]]=;
if(i%prime[j]==)break;
}
}
}
ll mul(ll x,ll y,ll z){
ll r=;
while(y){
if(y&){
r+=x;r%=z;y--;
}
x<<=;x%=z;y>>=;
}
return r;
}
ll Qc(ll x,ll y,ll z){
ll r=;
while(y){
if(y&)r=mul(r,x,z);
y>>=;x=mul(x,x,z);
}
return r;
}
/*
bool Is_prime(ll x){
for(ll i=1;i<=10;i++){
ll y=rand()%C+1;
if(y<0)y=-y;
ll z=Qc(y,x-1,x);
if(z!=1)return 0;
}
return 1;
}*/
bool Is_prime(ll n)
{
if(n<)return ;
if(n==)return ;
if(n%==)return ;
ll m=n-,j=;
while(m%==) {
j++;
m >>=;
}
for(int i=;i<=;i++){
ll a=rand()%(n-)+;
ll x=Qc(a,m,n);
ll y;
for(int k=;k<=j;k++){
y=mul(x,x,n);
if(y==&&x!=&&x!=n-)return ;
x=y;
}
if(x!=)return ;
}
return ;
}
void Dfs(ll x,ll y,int z){
if(x==){
ans[++ans[]]=y;return;
}
if(z<=)return;
if(x+>prime[num]&&Is_prime(x+))// ?????
ans[++ans[]]=y*(x+);
for(int i=z;i>=;i--)
if(x%(prime[i]-)==){
ll a=x/(prime[i]-),b=y,c=;
while(a%c==){
b*=prime[i];Dfs(a/c,b,i-);c*=prime[i];
}
}
}
int main()
{
freopen("arc.in","r",stdin);
freopen("arc.out","w",stdout);
cin>>n>>k;srand(time());
Get();Dfs(n,,num);
sort(ans+,ans++ans[]);
for(int i=;i<=k;i++)
cout<<ans[i]<<" ";
return ;
}

暴力筛法60
#include<iostream>
#include<cstdio>
#define ll long long
#define maxn 10000010
using namespace std;
int n;
ll ans,f[maxn];
void X(ll x)
{
for(int i=;i<=x;i++)f[i]=i;
for(int i=;i<=x/;i++){
if(f[i]==i){
for(int j=i;j<=x;j+=i){
f[j]=f[j]*(i-)/i;
}
}
}
}
int main()
{
freopen("sum.in","r",stdin);
freopen("sum.out","w",stdout);
cin>>n;
if(n==){
cout<<""<<endl;return ;
}
X(n);ans=;
for(int i=;i<=n;i++){
if(f[i]==i)f[i]--;
ans+=f[i];
}
cout<<ans<<endl;
fclose(stdin);fclose(stdout);
return ;
}
11.2 afternoon的更多相关文章
- 11.3 afternoon
迭代40 #include<cstdio> #include<cstring> using namespace std; int n,sum,falg; ],c[]; void ...
- 11.1 afternoon
幸运数字(number)Time Limit:1000ms Memory Limit:64MB题目描述LYK 最近运气很差,例如在 NOIP 初赛中仅仅考了 90 分,刚刚卡进复赛,于是它决定使用一些 ...
- 地区sql
/*Navicat MySQL Data Transfer Source Server : localhostSource Server Version : 50136Source Host : lo ...
- English trip -- VC(情景课) 6 C Is your class at 11:00? 你的课11点开始吗?
Grammar focus 语法点 Is your class at 11:00 ? # 带be动词的一般疑问句 Yes, it is No, it isn't 相当于 is not Pra ...
- 清北学堂—2020.1提高储备营—Day 2 afternoon(线段树、树状数组)
qbxt Day 2 afternoon --2020.1.18 济南 主讲:李佳实 目录一览 1.线段树 2.二叉搜索树(略过) 3.树状数组 总知识点:基础数据结构(本人初学感觉好难) 一.线段树 ...
- WinForm 天猫2013双11自动抢红包【源码下载】
1. 正确获取红包流程 2. 软件介绍 2.1 效果图: 2.2 功能介绍 2.2.1 账号登录 页面开始时,会载入这个网站:https://login.taobao.com/member/login ...
- C++11特性——变量部分(using类型别名、constexpr常量表达式、auto类型推断、nullptr空指针等)
#include <iostream> using namespace std; int main() { using cullptr = const unsigned long long ...
- CSS垂直居中的11种实现方式
今天是邓呆呆球衣退役的日子,在这个颇具纪念意义的日子里我写下自己的第一篇博客,还望前辈们多多提携,多多指教! 接下来,就进入正文,来说说关于垂直居中的事.(以下这11种垂直居中的实现方式均为笔者在日常 ...
- C++ 11 多线程--线程管理
说到多线程编程,那么就不得不提并行和并发,多线程是实现并发(并行)的一种手段.并行是指两个或多个独立的操作同时进行.注意这里是同时进行,区别于并发,在一个时间段内执行多个操作.在单核时代,多个线程是并 ...
随机推荐
- code jam训练
https://code.google.com/codejam/contests.html http://student.csdn.net/mcs/programming_challenges
- matlab的二维卷积操作
MATLAB的conv2函数实现步骤(conv2(A,B)): 其中,矩阵A和B的尺寸分别为ma*na即mb*nb ① 对矩阵A补零,第一行之前和最后一行之后都补mb-1行,第一列之前和最后一列之后都 ...
- UFLDL教程之(一)sparseae_exercise
下面,将UFLDL教程中的sparseae_exercise练习中的各函数及注释列举如下 首先,给出各函数的调用关系 主函数:train.m (1)调用sampleIMAGES函数从已知图像中扣取多个 ...
- Android应用程序的生命周期
转自Android应用程序的生命周期 在对一个简单的Hello World工程进行项目结构剖析后,我们接着来学习下一个Android应用程序的生命周期是怎么样的,以便为后面的开发有个垫下良好的基石~ ...
- OneAlert 入门(一)——事件流
OneAlert 入门(一)--事件流 OneAlert 是国内首个 SaaS 模式的云告警平台,集成国内外主流监控/支撑系统,实现一个平台上集中处理所有 IT 事件,提升 IT 可靠性.它能以史上第 ...
- Distinct Substrings
spoj694:http://www.spoj.com/problems/DISUBSTR/ 题意:给以一个串,求这个串的所有不同子串的个数. 题解:第一次接触后缀数组,这里可以转化成,求所有子串后缀 ...
- DJANGO增加超级用户
from django.contrib.auth.models import User user=User.objects.create_superuser('name','emailname@dem ...
- windows 版Tomcat 7.0的配置
http://hi.baidu.com/liguohei/item/d6ea23ff904f98753d198b24 测试成功,截图 ~~~~~~~~~~~~~~~ 一.安装JDK 1.7 1.添加环 ...
- Delphi 在任务栏隐藏程序图标
Delphi 在任务栏隐藏程序图标 方法一:1.修改工程文件中的“Application.MainFormOnTaskbar := True;”为“Application.MainFormOnTask ...
- Array.asList()注意
api: public static <T> List<T> asList(T... a) 返回一个受指定数组支持的固定大小的列表.(对返回列表的更改会“直接写”到数组.)此方 ...