Project Euler 457 题解
初等数论小题目
求
\]
配方,得到:
\]
根据亨泽尔引理,只需得到 \((2n-3)^2\equiv 13 \pmod {p}\) 的解即可提升到 \(p^2\)。这是二次剩余,直接解。
单次求解 \(O(\log n)\),时间复杂度 \(O(n)\)。
#include<bits/stdc++.h>
using namespace std;
#define int long long
namespace Cp{
int mod,I;
struct comp{
int x,y;
comp(int a=0,int b=0){
x=a,y=b;
}
};
bool operator ==(comp a,comp b){
return a.x==b.x&&a.y==b.y;
}
comp operator *(comp a,comp b){
return comp((a.x*b.x+I*a.y%mod*b.y)%mod,(a.x*b.y+a.y*b.x)%mod);
}
comp qp(comp a,int b){
if(b==0)return comp(1);
comp T=qp(a,b>>1);T=T*T;
if(b&1)return T*a;
return T;
}
bool ck(int x){
return qp(x,(mod-1)/2)==comp(1,0);
}
mt19937 rng(time(0));
void solve(int n,int p,int &x1,int &x2){
int a=rng()%mod;
while(!a||ck((a*a+mod-n)%mod))a=rng()%mod;
I=(a*a+mod-n)%mod;
x1=(qp(comp(a,1),(mod+1)>>1).x)%mod;
x2=mod-x1;
}
pair<int,int> solve(int N,int P){
mod=P;
if(!ck(N))return {-1,-1};
int x1,x2;solve(N,P,x1,x2);
return {x1,x2};
}
}
int baoli(int p){
int mod=p*p;
for(int i=0;i<p*p;i++)if((i*i-3*i+3*mod)%mod==1)return i;
return 0;
}
int qp(int a,int b,int p){
if(b==0)return 1;
int T=qp(a,b>>1,p);T=T*T%p;
if(b&1)return T*a%p;
return T;
}
int hez(int x,int p){
int M=p*p;
if((8*x-12%p+p)%p!=0){
int t=-qp((8*x-12%p+p)%p,p-2,p)*(((4*x*x-12*x-4))/p)%p;
t=(t%p+p)%p;
return t*p+x;
}else if((4*x*x%M-12*x%M+9+M)%M==13)return x;
return p*p;
}
int calc(int p){
if(p==2)return 0;
auto [a,b]=Cp::solve(13,p);
if(a==-1)return 0;
int I2=qp(2,p-2,p);a=(a+3)*I2%p,b=(b+3)*I2%p;
int res=min(hez(a,p),hez(b,p));
if(res>=p*p)return 0;
return res;
}
const int maxn=1e7+5;
bool isp[maxn];
vector<signed> pr;int ans=0;
signed n;
signed main(){
ios::sync_with_stdio(false);
cin.tie(0);cout.tie(0);
cin>>n;
for(int i=2;i<=n;i++){
if(!isp[i])ans+=calc(i),pr.push_back(i);
for(auto u:pr){
if(i*u>n)break;
isp[i*u]=1;
if(i%u==0)break;
}
}
cout<<ans<<endl;
return 0;
}
Project Euler 457 题解的更多相关文章
- project euler 169
project euler 169 题目链接:https://projecteuler.net/problem=169 参考题解:http://tieba.baidu.com/p/2738022069 ...
- Python练习题 040:Project Euler 012:有超过500个因子的三角形数
本题来自 Project Euler 第12题:https://projecteuler.net/problem=12 # Project Euler: Problem 12: Highly divi ...
- [project euler] program 4
上一次接触 project euler 还是2011年的事情,做了前三道题,后来被第四题卡住了,前面几题的代码也没有保留下来. 今天试着暴力破解了一下,代码如下: (我大概是第 172,719 个解出 ...
- Python练习题 029:Project Euler 001:3和5的倍数
开始做 Project Euler 的练习题.网站上总共有565题,真是个大题库啊! # Project Euler, Problem 1: Multiples of 3 and 5 # If we ...
- Project Euler 9
题意:三个正整数a + b + c = 1000,a*a + b*b = c*c.求a*b*c. 解法:可以暴力枚举,但是也有数学方法. 首先,a,b,c中肯定有至少一个为偶数,否则和不可能为以上两个 ...
- Project Euler 44: Find the smallest pair of pentagonal numbers whose sum and difference is pentagonal.
In Problem 42 we dealt with triangular problems, in Problem 44 of Project Euler we deal with pentago ...
- 【Project Euler 8】Largest product in a series
题目要求是: The four adjacent digits in the 1000-digit number that have the greatest product are 9 × 9 × ...
- Project Euler 第一题效率分析
Project Euler: 欧拉计划是一系列挑战数学或者计算机编程问题,解决这些问题需要的不仅仅是数学功底. 启动这一项目的目的在于,为乐于探索的人提供一个钻研其他领域并且学习新知识的平台,将这一平 ...
- Python练习题 049:Project Euler 022:姓名分值
本题来自 Project Euler 第22题:https://projecteuler.net/problem=22 ''' Project Euler: Problem 22: Names sco ...
- Python练习题 048:Project Euler 021:10000以内所有亲和数之和
本题来自 Project Euler 第21题:https://projecteuler.net/problem=21 ''' Project Euler: Problem 21: Amicable ...
随机推荐
- C语言八股文(温故知新)
1.volatile关键字 volatile int i=10; int j = i; ... int k = i; volatile告诉编译器i变量是随时可能发生变化的,例如IO端口的输入值,所以每 ...
- golang工具之generate
示例: 大家经常碰到命名错误码.状态码的同时,又要同步写码对应的翻译,有没有感觉很无聊.这里举一个例子: package main import "fmt" // 定义错误 ...
- highcharts中的折线图
折现图表的样式如下所示: 整体的一个设置代码如下: that.options = { title: { text: null }, subtitle: { text: null }, yAxis: { ...
- ZCMU-1111
与背包和动态规划有关(我认为) 采用dp数组存放吃掉i千克食物要用掉的钱 dp最开始要尽量的大方便过程中判断和最后的输出判断 实时更新dp,保留最小的钱 以前不知道的 printf函数可以这样用 fi ...
- aws命令行cli创建VPC网络、公有子网、私有子网、nat网关+EIP
在AWS部署海外节点, 图简单使用web控制台创建VPC和k8s集群出错(k8s), 使用cli命令行工具创建成功 本实例为复盘, 记录aws命令行工具cli创建VPC网络, a区和b区分别创建公有子 ...
- 在TOMCAT8.5使用 JOSSO 单点登录(Agent 端)
网上找到的玩法都是用 josso 给的命令行工具加工 tomcat,这个办法有不少问题: 1. tomcat8.5 还不支持 2. 很难配置,这让我险些放弃 tomcat8.5,用 tomcat8,但 ...
- 【C#】【平时作业】习题-5-类的基础知识
一.概念题 1. 举例说明什么是类,什么是对象,并说明类与对象的关系? 类:具有相同特性(数据元素)和行为(功能)的对象的抽象就是类. 对象:对象是人们要进行研究的任何事物,它不仅能表示具体的事物,还 ...
- 【前端】CSS实现图片文字对齐 并随着设备尺寸改变而改变大小
效果预览 HTML源码 点击查看HTML代码 <!DOCTYPE html> <html lang="zh-cn"> <head> <me ...
- Qt编写的项目作品5-物联网管理平台
一.功能特点 1 软件模块 设备监控模块,包括数据监控(表格形式展示).设备面板(面板形式展示).地图监控(地图形式展示).曲线监控(曲线形式展示). 数据查询模块,包括报警记录.运行记录.操作记录. ...
- [转]ubuntu20.04使用dev-sidecar找不到安装证书
火狐.chrome等浏览器不走系统证书,火狐.谷歌浏览器必须在浏览器上安装证书 然后死活找不到证书,搜索了整个目录也没有. 原来是我的显示隐藏文件没打开.打开目录的"显示隐藏文件" ...