Large repunit factors (Project Euler 132)
题目大意:
求出 大数111111.....1 (1e9个1) 前40个质因子的和。
思路:
可以把原来的数表示成$\frac{10^k - 1}{9}$ 其中$k=10^9$
如果一个质数$p$ 满足 $p\mid \frac{10^k - 1}{9}$
这等价于 $9p\mid\ 10^k - 1$
即$10^k \equiv\ 1\ (mod\ 9p)$
只要从小到大枚举质数p 然后检验是否满足这个同余式就好了。
代码:
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cmath>
#include <set>
#include <cstring>
#include <map>
using namespace std; typedef long long ll;
#define N 10000000
#define M 1100
typedef pair<int,int> pii; bool flag[N];
int p[N],phi[N]; void Get_Primes()
{
phi[]=;
for (int i=;i<N;i++)
{
if (!flag[i]) p[++p[]]=i,phi[i]=i-;
for (int j=;j<=p[] && i*p[j]<N;j++)
{
flag[i*p[j]]=true;
if (i%p[j]==)
{
phi[i*p[j]]=phi[i]*p[j];
break;
}
else phi[i*p[j]]=phi[i]*(p[j]-);
}
}
} int Power(int x,int P,int mod)
{
int res = ;
for (; P ; P >>= )
{
if (P & ) res = 1ll * res * x % mod;
x = 1ll * x * x % mod;
}
return res;
} int main()
{
Get_Primes();
int cnt = ; ll ans = ;
for (int i = ; cnt < ; ++i) if (Power(, , * p[i]) == ) ++cnt, ans += p[i];
cout << ans << endl;
return ;
}
答案843296
Large repunit factors (Project Euler 132)的更多相关文章
- Python练习题 041:Project Euler 013:求和、取前10位数值
		
本题来自 Project Euler 第13题:https://projecteuler.net/problem=13 # Project Euler: Problem 13: Large sum # ...
 - Python练习题 040:Project Euler 012:有超过500个因子的三角形数
		
本题来自 Project Euler 第12题:https://projecteuler.net/problem=12 # Project Euler: Problem 12: Highly divi ...
 - Python练习题 031:Project Euler 003:最大质因数
		
本题来自 Project Euler 第3题:https://projecteuler.net/problem=3 # Project Euler: Problem 3: Largest prime ...
 - [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 169
		
project euler 169 题目链接:https://projecteuler.net/problem=169 参考题解:http://tieba.baidu.com/p/2738022069 ...
 - 【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 × ...
 
随机推荐
- 【POI】修改已存在的xls,新添一列后,再保存本文件+获取最大有效行号+获取单元格内容
			
使用POI版本: ① ② ③ ④ package com.poi.dealXlsx; import java.io.File; import java.io.FileInputStream; impo ...
 - 【java】LocalDate和Date等新旧日期类的转化
			
// 01. java.util.Date --> java.time.LocalDateTime public void UDateToLocalDateTime() { java.util. ...
 - 修改nvm镜像地址
			
最近几个项目切换开发要求Node版本不一样,没法运行.需要用nvm或n等来管理node版本,选谁见仁见智了,反正我选了nvm. 下载个node慢得要死,等半天结果还失败,真是窝火.官方文档又详细过了一 ...
 - windows下硬盘的逻辑结构
			
共有五部分组成: MBR:主引导分区(硬盘启动记录) DBR:DOS启动记录 FAT: 文件分配表 DIR:根目录区 DATA:数据区
 - 利用github和git命令,将本地项目共享到服务器上
			
一.步骤 1. 创建项目根目录 mkdir 文件夹名 2. 初始化文件夹 git init 3. 配置用户名和邮箱(第一次配置后,不需要再登录) git config user.name 名字 git ...
 - 【转载】tcp窗口滑动以及拥塞控制
			
转自:http://blog.chinaunix.net/uid-26275986-id-4109679.html TCP协议作为一个可靠的面向流的传输协议,其可靠性和流量控制由滑动窗口协议保证,而拥 ...
 - 持续集成之Jenkins+Gitlab简介 [一]
			
转载:http://blog.csdn.net/abcdocker/article/details/53840449 持续集成概念 持续集成Continuous Integration 持续交付Con ...
 - CentOS下安装实时检測网络带宽的小工具bmon
			
首先下载rpmforge-release扩展的rpm包 32位操作系统:wget http://www.sudu.us/Tools/bmon/rpmforge-release-0.3.6-1.el5. ...
 - Selenium webdriver Java 操作chrome 浏览器
			
Step1: 下载chromedriver. 下载路径: http://chromedriver.storage.googleapis.com/index.html 选择一个合适的下载即可.我下载的是 ...
 - gdb调试多进程和多线程命令(转)
			
1. 默认设置下,在调试多进程程序时GDB只会调试主进程.但是GDB(>V7.0)支持多进程的分别以及同时调试,换句话说,GDB可以同时调试多个程序.只需要设置follow-fork-mode( ...