![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
ACM--邝斌数论基础
文章平均质量分 60
布呗之路
每个人都有不同的路,所以每个人都会孤独。
展开
-
LightOJ-1245
//题意很明了就是求一个数n除以[1,n]的数的和;列举一下找找规律就好了;#include<cstdio>#include<cmath>using namespace std;int main (){ long long data,t; scanf("%lld",&t); for(long long cas=1;cas<=t;cas++) {原创 2017-11-07 13:01:48 · 347 阅读 · 0 评论 -
模线性方程
///用于计算ax==b(mod m)在[0,m)的所有解,所有解存在ans容器中,返回ans; ///输出时的定义 vectorans=solve(a,b,m);输出循环for(int i=0;ans[i];i++) 输出ans[i]; LL gcd_ex(LL a,LL b,LL &x,LL &y) { if(b==0) {x=1;y=0;return a;} LL d原创 2017-10-28 13:27:34 · 254 阅读 · 0 评论 -
GCD
///用于计算a和b的最大公约数gcd和最小公倍数lcm LL gcd(LL a,LL b){return b==0?a:gcd(a,b%a);} LL lcm(LL a,LL b) {return a*b/gcd(a,b);}///用于计算ax==b(mod m)的一个特解,如果没有特解返回m本身 LL gcd_ex(LL a,LL b,LL &x,LL &y) { if(b==原创 2017-10-28 12:46:14 · 501 阅读 · 0 评论 -
素数 euler
///素数打表void getprime(){ memset(prime,0,sizeof(prime)); for(int i=2;i<=maxn;i++) { if(!prime[i]) prime[flag++]=i; for(int j=1;j<flag;j++) { if(i*prime[j原创 2017-10-22 00:10:38 · 301 阅读 · 0 评论 -
牛客练习赛8,给个n,求1到n的所有数的约数个数的和~
A约数个数的和时间限制:C/C++ 1秒,其他语言2秒空间限制:C/C++ 32768K,其他语言65536K64bit IO Format: %lld题目描述给个n,求1到n的所有数的约数个数的和~输入描述:第一行一个正整数n输出描述:输出一个整数,表示答案示例1输入3原创 2017-12-15 21:48:05 · 1784 阅读 · 0 评论 -
LightOJ-1259
///题意:求一个数分解为两个素数且该和为原数的对数.///思路:在1e7的范围内打一个素数表,直接暴力进行搜索。#include<cstdio>#include<cstring>using namespace std;typedef long long LL;const int maxn=1e7+7,maxn1=1e6+7;///我只能说这道题时是卡内存;int prime[maxn原创 2017-11-06 17:56:53 · 432 阅读 · 0 评论 -
LightOJ-1282
///题意:就是求一个数的前三位和后三位;而且保证它的位数至少6位;///首先说一下前三位的求法很简单就是快速幂P(n,k)对1000取余;///后三位的求法(很难说清楚)举个例子说吧;///我们知道一个数的log10就是他它的位数减一位。比如ans=P(2,10)=1024;它的log就等于3;///多个log相减进行合并实质就是除法;我们不妨让该数取完log后(double)再减去它的位原创 2017-11-06 17:55:58 · 360 阅读 · 0 评论 -
LightOJ-1336
///题意:输入一个n,输出1-n的西格玛值(因子和)为偶数的个数;///思路:可以找奇数的个数ans再用n-ans即为偶数的个数;///分析:其中单独的一项,是等比数列求和的公式。如果要求σ(n)为奇数,那公式中的每一项乘数都得是奇数。///对于其中的第i项乘数f(i)=pi^0+pi^1+…+pi^ei.///当pi=2时,f(i)一定是奇数。///当pi!=2时,由于pi是奇数,只有原创 2017-11-06 17:54:41 · 238 阅读 · 0 评论 -
LightOJ-1370
///题意就是将一个数a分解成两个数积的形式的个数,求这两个因子>=b的对数///将a进行质因数分解,每分解出来一个数就相当于找到了两个(a=k*b);所以最后结果除以2就OK了;#include<cstdio>#include<cstring>using namespace std;typedef long long LL;const int maxn=1e6+7;int prime原创 2017-11-06 17:53:50 · 344 阅读 · 0 评论 -
LightOJ-1341
///题意就是将一个数a分解成两个数积的形式的个数,求这两个因子>=b的对数///将a进行质因数分解,每分解出来一个数就相当于找到了两个(a=k*b);所以最后结果除以2就OK了;#include<cstdio>#include<cstring>using namespace std;typedef long long LL;const int maxn=1e6+7;int prime原创 2017-11-06 17:52:21 · 485 阅读 · 0 评论 -
LightOJ-1220
///题意:将一个数n表示成n=a^b的形式,求b的最大值;///如果一个是完全平方方数,那么它的的分解由唯一分解定理加gcd的合并操作即可实现///这道题最骚的就是有负数的情况,这也是很烦(主要是那个题目给了最小的数据是2呀),后来看了debug才知道了我还是很单纯的;#include<cstdio>#include<cstring>#include<iostream>#include原创 2017-11-06 17:47:52 · 327 阅读 · 0 评论 -
LihgtOJ-1214
///题意:就是一个大数是否能够整除一个整数///大数的板子直接上就OK了 只是不断的取余到最后的结果的等于0就可以了#include<cstdio>#include<cstring>using namespace std;int main (){ int t; scanf("%d",&t); char str[521];int data; for(in原创 2017-11-06 17:45:13 · 201 阅读 · 0 评论 -
POJ-1213 k层for的sum
///题意就是说给你一个n*n的字符型矩阵,再给你k个棋子,要求摆放的k个棋子的任意两个不能在同一行或者同一列(不就是说一定要在斜对面嘛)///然后就是在所给的字符型矩阵中把所有棋子放在所给的‘#’位置上看有多少种放法;///思路 dfs走一波水水的就过了;#include<cstdio>#include<cstring>using namespace std;char str[10][原创 2017-11-08 22:55:48 · 226 阅读 · 0 评论 -
LightOJ-1220
///题意:将一个数n表示成n=a^b的形式,求b的最大值;///如果一个是完全平方方数,那么它的的分解由唯一分解定理加gcd的合并操作即可实现///这道题最骚的就是有负数的情况,这也是很烦(主要是那个题目给了最小的数据是2呀),后来看了debug才知道了我还是很单纯的;#include<cstdio>#include<cstring>#include<iostream>#include原创 2017-11-07 13:05:41 · 247 阅读 · 0 评论 -
LightOJ-1234
///题意:求一个数的调和级数;///思路:在1e8的范围内进行分块打表#include<cstdio>using namespace std;const int maxn=1e8;const int maxn1=2e6+7;///卡了一部分内存;int cnt=0;double a[maxn1];void init(){ double ans=0; a[0]=0;/原创 2017-11-07 13:04:47 · 279 阅读 · 0 评论 -
LightOJ-1236
///题意很简单明了 就是求一个数n在[1,n]中lcm(i,i)==n(i<=j)的对数;///思路:咋们可以先打一个素数表用唯一分解定理分解出该数因子的个数然后找规律就可以了;///分析一下i,j;(1)得到i和j的最小公倍数的办法是将i和j进行唯一分解,取相同两个因子的幂的最大值作为该因子的幂,进行相乘就可以得到lcm;///若 n=a1^p1*a2^p2*...*am^pm(a1,a2原创 2017-11-07 13:03:05 · 349 阅读 · 0 评论 -
中国剩余定理及其拓展
这里写代码片///中国剩余定理/// 用于计算x==a[i](mod m[i]) 的一个特解,要求所有的模两两互质。///简单的求解过程如下:///1.M0=m[1]*m[2]*...m[n];///c[i]是方程m[i]*x==1(mod m[i])的一个特解,其中M[i]=M0/m[i];///x==a[1]*c[1]*M[1]+a[2]*c[2]*M[2]+....a[n]*c[n原创 2017-10-31 09:16:51 · 383 阅读 · 0 评论