ACM-数论
文章平均质量分 52
acm 数论
Echo_ac
不知未来怎样,现在一定全力以赴
展开
-
P2424 约数和——快速求l~r所有数的约数和的和
文章目录暴力题解:优化代码题目链接暴力题解:首先我们看暴力求1~n所有数的约数和的的和做法遍历1~n,看每一个i他的倍数有多少个n/i, ans+=(n/i)*i;参考大佬博客#include<cstdio>int main(){ int n,ans = 0; scanf("%d",&n); for (int i=1; i<=n; ++i) { ans += (n/i)*i; } printf("原创 2021-02-26 21:20:35 · 326 阅读 · 0 评论 -
Codeforces Round #701 (Div. 2) C. Floor and Mod(思维+数学)
题目题解:设余数为k, 由题意,可以很容易推出a,b,k的关系式子a=k(b+1)显然b>=k+1,那么a>=k*(k+1+1)=k(k+2),那么我们枚举每一个余数k,这样O(sqrt(n))的做法可以通过对于每一个k,我们计算b的最小值minb=k+1,b的最大值maxb=min(b,x/k-1), 在[minb,maxb]区间内的b都是可行的,因为,b=a/k-1, 显然k固定,所有可行的b都是连续的,直接加上就行了注意,我们不能计算a的最大最小值,a=k(b+1),显然,如果原创 2021-02-13 16:19:05 · 1085 阅读 · 0 评论 -
Educational Codeforces Round 99 (Rated for Div. 2) B. Jumps
题目传送门题目大意初始在x轴的0处,设当前位置为y,每一次要么跳到y+k(k为当前是第几跳)处,要么跳到y-1处.现在给定目标位置x,问最少跳到x处的步数思路先按照1+2+3+…k的跳法往前调,如果把其中的某一跳(第k跳)改成y-1,那么最后达到的位置,相当于左移k+1,可以自己模拟下。那么可以得知我们最小的左移量是2(k=1时)找到大于等于x的第一个sum[i],如果sum[i]==x,则答案是i如果sum[i]-x>=2,那么我们可以通过改变前面的某一跳,改成y-1,原创 2020-12-03 19:24:40 · 87 阅读 · 0 评论 -
n个元素,入栈序列为1 2..n,有多少种出栈序列
11+n(2nn)\frac{1}{1+n}{2n \choose n}1+n1(n2n)即 11+n\frac{1}{1+n}1+n1Cn2n(我真的不懂markdown语法。。。)原创 2020-11-13 08:42:39 · 469 阅读 · 0 评论 -
汉诺塔n个圆盘移动次数
次数为 :2n -1原创 2020-11-13 08:26:38 · 1836 阅读 · 0 评论 -
Atcoder ABC 178 C题(排列组合,优化)
题目链接文章目录思路:注意:Ac代码:思路:对于长度为n的排列:1 总的可能性是10^n2 不含有0和9的可能性是8^n3只含有0的但不含有9的可能性:4 只有9:与0一样5 最终答案由1减去2 3 4即可注意:求组合数的时候要乘以逆元在设计减法的时候要加上modx的逆元:x^(mod-2)预处理,提前求阶层Ac代码:#include <bits/stdc++.h>typedef long long LL;const int N = 1e6+10;usin原创 2020-09-14 16:31:12 · 365 阅读 · 0 评论 -
数学结论——关于自然数的平方和是否为平方数
1²+2²+…+n² 为平方数的解只有 n=1 或 n=24原创 2020-08-01 17:07:27 · 341 阅读 · 2 评论 -
Acwing 1205. 蓝桥杯 买不到的数目
题目思路:定理:n*m - n - m#include<bits/stdc++.h>using namespace std;int main(){ int n,m; cin>>n>>m; cout<<n*m-n-m; return 0;}原创 2020-07-27 22:15:58 · 133 阅读 · 0 评论 -
牛客练习赛 66 C公因子(数学 思维 gcd)
题目传送门文章目录题目大意:思路:AC代码:题目大意:给定一个含n个整数的序列a[i , n], 求一个最小的x使得(a[i]+x)%p==0,p成为这个序列的gcd。输出最大的gcd和满足条件的最小的x。思路:来自询问大佬+自己思考1 如果对任意的(a[i]+x)%p=0, 则有任意的两项i,j((a[i]+x) - (a[j]+x))%p=0,即(a[i] - a[j])%p=02 设当x = c 时满足题意要求,则(a[i] +c)%p=0所以(a[i] + c - a[j] -c原创 2020-06-27 20:50:52 · 177 阅读 · 0 评论 -
c/c++ 分解质因数——(蒟蒻讲解)
文章目录正文:代码:例子:正文:代码简短,见注释,本蒟弱看了大佬题解来写的,一道比赛题里面用了大佬题解代码:#include<bits/stdc++.h>using namespace std;int main(){ int n; cin>>n; int n_sqrt = sqrt(n); //循环截至条件到根号n就行 //从2开始,遇到的第一个因数,一定是质数 //比如24,遇到了2,就一直除,直到余数不为0 //有人说原创 2020-06-01 15:28:36 · 1225 阅读 · 2 评论