NJUST校赛D题
来源:互联网 发布:mysql php apache集成 编辑:程序博客网 时间:2024/05/20 10:23
比赛时写了100多行WA了八遍,今早发现SB了,随手敲了30行,1A。。。。。。内心崩溃
题意:求1~n之间gcd(a,b,c)=m的3元组数量。
分析:题意等价于求1~n/m之间gcd(a,b,c)=1的3元组数量,所以只要求1~n之间gcd(a,b,c)=1的3元组数量即可,记之为An。
(a,b,c)三元组一共有C(n,3)个。要求gcd(a,b,c)=1的3元组数,只需将C(n,3)依次减去gcd(a,b,c)=2,3,4……的三元组数,亦即A(n/2),A(n/3),A(n/4)……
递推公式:An=C(n,3)-A(n/2)-A(n/3)-A(n/4)-……
之后用一下记忆化搜索就行了,代码如下:
#include <cstdio>#include <cstring>using namespace std;typedef long long ll;ll ans[100005];ll cn3(ll n){ return n*(n-1)*(n-2)/6;}ll triple(ll n){ if(ans[n]!=-1)return ans[n]; ll sum=cn3(n); for(int i=2;i<=n/3;i++) { sum-=triple(n/i); } return ans[n]=sum;}int main(){ int t; scanf("%d",&t); memset(ans,-1,sizeof(ans)); ans[0]=ans[1]=ans[2]=0; while(t--) { ll m,n; scanf("%lld%lld",&m,&n); printf("%lld\n",triple(m/n)); } return 0;}
另:话说题解写的是莫比乌斯反演什么的,并没有学过,找个时间学一下。
0 0
- NJUST校赛D题
- NJUST 挺好的bfs题
- NJUST 1746 Similar Number(南京邀请赛 J题)
- njust 1734 南京邀请赛热身赛 A题 Dinner
- NJUST 有只喵
- NJUST--water1
- NJUST---sequence
- NJUST NJUST的饭卡
- NJUST 1743 Boring Game(2013南京邀请赛G题)(thx to _LT_zyc)
- NJUST 1747 Yet another end of the world(13年南京邀请赛-K题-数学)
- NJUST 黑黑更健康
- NJUST 1929 water1
- NJUST 1925 sequence
- NJUST--偷吃糖果
- njust sequence(二分查找)
- 2016-NJUST-sequence
- 2016-NJUST-count number
- njust 1420-线段树-3
- 方法
- 安卓新闻客户端实战(一):项目简介
- SNOI 2016 酱油记+解题报告
- c++学习笔记(一)
- Spark开发环境配置(windows/Intellij IDEA 篇)
- NJUST校赛D题
- 实用的 Python —— 进制(二进制形式中 1 的位数)
- Swift的常用全局函数介绍
- 复杂网络社区结构发现算法-基于igraph C library
- Swift断言
- 复杂网络社区结构发现算法-基于python networkx clique渗透算法
- 解决mysql乱码问题
- 复杂网络社区结构发现算法-基于igraph 标签传播算法
- Deep Learning简介