SPOJ VLATTICE - Visible Lattice Points 【“小”大数加减】
2024-09-05 02:20:34
一道比较简单的莫比乌斯反演,不过ans会爆long long,我是用结构体来存结果的,结构体中两个LL型变量分别存大于1e17和小于1e17的部分
#include<bits/stdc++.h> using namespace std; typedef long long LL; const int maxn=1e6; ]; ]; ]; void init() { mu[]=; ; ;i<=maxn;i++) { if(!check[i]) { prime[tot++]=i; mu[i]=-; } ;j<tot;j++) { if(i*prime[j]>maxn) break; check[i*prime[j]]=true; ) { mu[i*prime[j]]=; break; } else { mu[i*prime[j]]=-mu[i]; } } } } LL n; const LL mod=1e17; struct node { LL a,b; node(LL a_=,LL b_=) { a=a_,b=b_; } void print() { if(a) printf("%lld%017lld\n",a,b); else printf("%lld\n",b); } }; node add(node x,LL y) { ) { LL t1=(x.b+y)/mod; LL t2=(x.b+y)%mod; x.a+=t1,x.b=t2; return x; } else { LL t1=(x.b+y)/mod; LL t2=(x.b+y)%mod; &&t2<) t2+=mod,t1--; x.a+=t1,x.b=t2; return x; } } int main() { init(); int T; node t; LL x; scanf("%d",&T); while(T--) { scanf("%lld",&n); node ans; ;i<=n;i++) ans=add(ans,mu[i]*(n/i)*(n/i)*(n/i)); ;i<=n;i++) ans=add(ans,mu[i]*(n/i)*(n/i)*); ans=add(ans,); ans.print(); } }
最新文章
- ecshop二次开发常用文件位置
- 修复HTTP 503错误
- jQuery.queue源码分析
- iOS 直播(一)
- ActiveMQ 学习笔记
- cli下的php(并传递参数)
- 折腾iPhone的生活——我的越狱插件精品筛选
- zendguard安装破解
- JS 数组扩展函数--求起始项到终止项和
- Html辅助方法 之 Form表单标签
- 【DFS+小操作判重】【HDU2610+HDU2611】Sequence
- 在centos中添加开机自启动服务
- Selenium常用API用法示例集----下拉框、文本域及富文本框、弹窗、JS、frame、文件上传和下载
- Core官方DI解析(5)-ServiceProviderEngine
- 高级组件——进度条 JProgressBar
- 【Linux】ODBC安装
- 常见URL字符及URL编码值
- NetBeans 启动时出现 Invalid jdkhome specified提示
- 15、xtrabackup 全量备份
- 初识 Swift编程语言(中文版)
热门文章
- Java实体类之间的映射(一对一关系)
- Python字典的json格式化处理(换行与不换行)
- Vue知识整理4:v-html标签
- js中parseInt()与parseFloat(),Number(),Boolean(),String()转换
- Java ——if条件语句 switch语句
- django amdin后台改成中文
- linux eclipse 下出现undefined reference ***,在使用boost库时出现的问题
- C# DropDownList绑定添加新数据的三种方法
- SpringBoot 使用logback
- [Web 前端] 002 html 常用行行级元素