HDU6428-Calculate-数论函数
并不知道为什么同样一份代码早上超时下午就A了…好像数据是随机的?
做的第一道不是简单板题的数论函数题.果然做不出来…
在网上研究了好久,才算稍微研究明白.看到了两种推导的思路.(写了半天发现讲起来好麻烦,有时间再来更新)
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<climits>
#include<cmath>
#include<cstdlib>
#include<ctime>
#include<map>
#include<queue>
#include<set>
#include<vector>using namespace std;typedef long long ll;
const int MAXN=1e7+5;int prime[MAXN],h[MAXN],f2[MAXN],f3[MAXN],deg[MAXN],last[MAXN];
bool check[MAXN]; int tot;void pre()
{h[1]=f2[1]=f3[1]=last[1]=1; tot=0;for(int i=2;i<MAXN;i++){if(!check[i]){prime[tot++]=i; h[i]=i-2; f2[i]=f3[i]=i; last[i]=1; deg[i]=1;}for(int j=0;j<tot && (ll)prime[j]*i<(ll)MAXN;j++){int x=prime[j]*i; check[x]=true;if(i%prime[j]){h[x]=h[i]*(prime[j]-2); f2[x]=f2[i]*prime[j]; f3[x]=f3[i]*prime[j];last[x]=i; deg[x]=1;}else{last[x]=last[i]; deg[x]=deg[i]+1;if(last[x]>1) //含有其他因子 {h[x]=h[x/last[x]]*h[last[x]];}else //素数幂 {//if(deg[x]==2) if(i>prime[j]) h[x]=h[i]*prime[j];else h[x]=(prime[j]-1)*(prime[j]-1);}f2[x]=f2[i]*(deg[x]%2==1?prime[j]:1);f3[x]=f3[i]*(deg[x]%3==1?prime[j]:1);break;}}}
}const int mod=1<<30;
int A,B,C;ll Min(ll A,ll B,ll C)
{ll ret=A;if(B<ret && B*B<ret) ret=B*B;if(C<ret && C*C<ret && C*C*C<ret) ret=C*C*C;return ret;
}int main()
{//printf("mod=%lld\n",mod);pre();int T;scanf("%d",&T);while(T--){ll ans=0;scanf("%d%d%d",&A,&B,&C);int limit=Min(A,B,C);for(int i=1;i<=limit;i++){ans=ans+(ll)h[i]*((A/i)*(B/f2[i])*(C/f3[i])); //这里这个括号很玄学,去掉后面的括号就会错...并不知道为什么}printf("%lld\n",ans%mod);}return 0;
}
HDU6428-Calculate-数论函数相关推荐
- 组合数学与数论函数专题
组合数学专题 专题简介 本专题包含了一些组合数学中常见的套路和方法,如拉格朗日插值,动态规划,容斥原理,狄利克雷卷积,线性筛,杜教筛 等等. 目录 2018 四川省赛GRISAIA (数论分块) HD ...
- html计算平均分,Calculate phastCon Score for a gene —- 计算基因的phastCon平均分,判断基因保守型...
Calculate phastCon Score for a gene -- 计算基因的phastCon平均分,判断基因保守型 PhastCon socre is the score from 0 t ...
- Maven 的Could not calculate build plan错误解决方法(不一定适用,看原因)
Maven 的Could not calculate build plan错误解决方法(不一定适用,看原因): 1.将C:\Users\a\.m2\repository\org\apache\mave ...
- CUDA Samples: Calculate Histogram(atomicAdd)
以下CUDA sample是分别用C++和CUDA实现的计算一维直方图,并对其中使用到的CUDA函数进行了解说,code参考了<GPU高性能编程CUDA实战>一书的第九章,各个文件内容如下 ...
- [记录]calculate age based on date of birth
calculate age based on date of birth know one new webiste:eval.in run php code 转载于:https://www.cnblo ...
- 自定义表单mysql_自定义表单,计算答案然后更新mysql DB(Custom form, calculate answer then update mysql DB)...
自定义表单,计算答案然后更新mysql DB(Custom form, calculate answer then update mysql DB) 我想要实现的是用户购买代币时的模拟支付系统. 我坚 ...
- R语言使用dplyr包使用group_by函数、summarise函数和mutate函数计算分组下的均值、标准差、样本个数、以及分组均值的95%执行区间对应的下限值和上限值(Calculate CI)
R语言使用dplyr包使用group_by函数.summarise函数和mutate函数计算分组下的均值.标准差.样本个数.以及分组均值的95%执行区间对应的下限值和上限值(Calculate 95% ...
- Eclipse创建的Maven项目报错Could not calculate build plan: Plugin
Eclipse创建的Maven项目报错Could not calculate build plan: Plugin 2018年05月10日 21:59:25 TIMI-Nian 阅读数:5040 标签 ...
- [WUST2017]一组简单一点的题目(三) A - Calculate S(n)
题目:A - Calculate S(n) Calculate S(n). S(n)=1 3+2 3 +3 3 +......+n 3 . Input Each line will contain o ...
- HDOJ(HDU) 2139 Calculate the formula(水题,又一个用JavaAC不了的题目)
Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) 看到这个时间,我懵逼了... 果然,J ...
最新文章
- 重读图灵经典之作,九条反驳意见引人深思
- Linux命令行下登录ssl加密的ftp
- 2019-11-08 频域的直观感受
- ubuntu解压zip文件乱码问题
- C语言中的静态函数的作用
- linux之网络编程ICMP校验算法
- poj 2484 A Funny Game
- php广告任务网源码_THINKPHP仿我爱广告任务网|任务网站源码下载
- Android共享电脑上网
- C#LeetCode刷题之#225-用队列实现栈(Implement Stack using Queues)
- jdbc封装工具类代码_【百战程序员从开始到植发】之JDBC
- win7电脑误删鼠标键盘驱动_Win7系统鼠标键盘驱动检测不到的三种解决方法
- 如何优雅的学习英语?从理解英语的使用思维开始!
- c语言忽略转义字符,C语言转义字符
- 数据导入与预处理-第4章-数据获取python读取pdf文档
- 2023年如何搭建最小可行性的产品文档/产品手册?
- QQ轻聊版、TIM版无法修改个人文件夹位置的解决方法
- 拨云搜索:帮你查找记忆中的小说
- 对 SE/GE 的改进 ECA
- 雷达有源干扰——噪声乘积干扰
热门文章
- Date函数基础知识整理
- VM克隆之后启动eth0找不到eth0:unknown interface:no such device
- MST:Bad Cowtractors(POJ 2377)
- js 面向对象插件写法,还是很好理解的
- jquery实现导航栏鼠标点击后实行背景高亮,点击离开恢复(超级简单!!!!)...
- yum update Transaction Check Error
- 小心pthread_cond_signal和SetEvent之间的差异
- 二分图匹配----匈牙利算法之二
- java如何找重复数字_Java如何找出数组中重复的数字
- 2016 linux发行版排行_选择困难症必看!云服务器如何选择操作系统,Windows和Linux哪个更好?...