博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ACM-ICPC 2018 焦作赛区网络预赛G Give Candies(欧拉降幂)
阅读量:4659 次
发布时间:2019-06-09

本文共 1308 字,大约阅读时间需要 4 分钟。

题意:给你n个东西,叫你把n分成任意段,这样的分法有几种(例如3:1 1 1,1 2,2 1,3 ;所以3共有4种),n最多有1e5位,答案取模p = 1e9+7

思路:就是往n个东西中间插任意个板子,所以最多能插n - 1个,所以答案为2^(n - 1) % p。直接套用模板

 

#include
#include
#include
#include
#include
#define ll long long#define N 1000100using namespace std;char b[N];ll p[N];ll a, c;ll quick(ll a, ll b){ //快速幂 ll k = 1; while(b){ if(b%2==1){ k = k*a; k %=c; } a = a*a%c; b /=2; } return k;}void priem(){ memset(p, 0, sizeof(p)); ll i, j; p[1] = 1; for(i=2; i<=sqrt(N); i++){ for(j=2; j<=N/i; j++) p[i*j] = 1; }}ll ola(ll n){ //欧拉函数 ll i, j, r, aa; r = n; aa = n; for(i=2; i<=sqrt(n); i++){ if(!p[i]){ if(aa%i==0){ r = r/i*(i-1); while(aa%i==0) aa /= i; } } } if(aa>1) r = r/aa*(aa-1); return r;}int main(){ ll d, i, j; priem(); a=2;c=1e9+7; int T; cin>>T; while(T--){ scanf("%s",b); b[strlen(b)-1]--; ll l = strlen(b); ll B=0; ll oc = ola(c); // cout<<"oc = "<
<
oc) break; } //cout<
<

 

转载于:https://www.cnblogs.com/Fy1999/p/9652191.html

你可能感兴趣的文章
shell脚本练习01
查看>>
WPF图标拾取器
查看>>
通过取父级for循环的i来理解闭包,iife,匿名函数
查看>>
HDU 3374 String Problem
查看>>
数据集
查看>>
[Leetcode] unique paths ii 独特路径
查看>>
HDU 1217 Arbitrage (Floyd + SPFA判环)
查看>>
IntelliJ idea学习资源
查看>>
Django Rest Framework -解析器
查看>>
ExtJs 分组表格控件----监听
查看>>
Hibernate二级缓存配置
查看>>
LoadRunner常用术语
查看>>
关于jedis2.4以上版本的连接池配置,及工具类
查看>>
记忆讲师石伟华微信公众号2017所有文章汇总(待更新)
查看>>
FactoryBean
查看>>
Coolite动态加载CheckboxGroup,无法在后台中获取
查看>>
C3P0连接池工具类使用
查看>>
SVN常用命令备注
查看>>
孩子教育
查看>>
解决Cacti监控图像断断续续问题
查看>>