- 博客(4)
- 资源 (1)
- 收藏
- 关注
原创 D-小a与黄金街道(欧拉函数 +快速幂)
原题链接:传送门 题意:给四个数 n,k,A,B。小a会从1走到n-1,小b从n-1走到1。小a当前位置记为x,小b当前位置记为y。当gcd(x,n)==1时,小a的黄金A会变为A * kx,gcd(y,n) == 1 时,小b的黄金B会变为B * ky。问小a走到n-1时,他们手中的黄金数为多少。 思路:主要就是求1到n-1中与n互质的数之和——可以用欧拉来求,公式phi[n]*n/2可以直接求...
2019-01-23 17:44:17 185
原创 两种方法求欧拉函数
直接求法: #include <bits/stdc++.h> using namespace std; typedef long long ll; ll Eular(ll n){ ll res = n; for(int i=2;i*i<=n;i++){ if(n%i == 0) res = res/i*(i-1); //先除后乘防止中间数据溢出...
2019-01-23 17:23:50 444
原创 Hello 2019 C. Yuhao and a Parenthesis
原题链接:传送门 题意:给你n个字符串,只含有 ( 和 ),将字符串两两配对后,括号完美配对的有多少。 思路:先将左右括号能直接配对的消去,然后记录消去后的左括号和右括号的个数,用l[]、r[]两个数组分别来存消去后的字符串中的有mi个( 和 )的个数。最后遍历一下,mi个 ( 肯定能和 mi个 ) 配对,然后取l[] r[] 中较少的就好了,最后还要加上本身就能配对的个数/2。 #include...
2019-01-05 18:40:54 255
原创 Hello 2019 B - Petr and a Combination Lock
原题链接:传送门 给你n个数,问你经过加或减的操作,最后和是否能整除360。 二进制枚举 #include <bits/stdc++.h> using namespace std; const int N = 20; int a[N]; int main(){ int n; scanf("%d",&n); for(int i=0;i<n;i++)...
2019-01-05 16:49:27 317
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人