关键词:
可能还是太菜了,最近每写一道题都会显得十分吃力,不过令人欣慰的是还可以从中学到不少的东西。
题目的大概意思:给出面积啊a,还有最短的边b,求出能够组成矩形一共有多少个组合。
samole input:
10 2
12 2
sample output:
1 (10一共有两对因数,2,5还有1,10);
2
分析:题目的意思很明显就是要求出a的符合条件的因数的对数找出来,那么涉及到数的因数,就应该想到“算术基本定理”,而算法基本定理又要有素数作为铺垫,所以筛选素数又要用到”欧拉函数筛选法“;
思路:先用“算术基本定理”算出a总体一共有多少个因数,在除以2来求对数,之后暴力求出1到b有多少限制的对数,两者相减便是答案。
注意事项:由于a给出的范围是10的12次方,所以素数筛选只需要筛选到10的6次方就可以了(m*m=a,过了m之后便会重复)。
第二个注意的地方也是题目最为关键的地方之一:代码如下:
if(a/b < b) //意思就是当b的限制达到a的算术平方根的时候,那么将不会在存在任何一个满足题目的组合,那么就可以直接输出结果,并且continue循环执行下一个; printf("Case %d: %lld\n",i,0); continue;
总体的代码走一走:
#include<cstdio> #include<iostream> #include<cstring> #define Max 1000005 #include<cmath> using namespace std; typedef long long int ll; bool vis[Max]; int p[Max],p_num=0; void ola() memset(vis,false,sizeof(vis)); memset(p,0,sizeof(p)); for(int i=2;i<Max;i++) if(!vis[i]) p[p_num++]=i; for(int j=0;j<p_num;j++) if(i*p[j]>Max) break; vis[i*p[j]]=true; if(i%p[j]==0) break; ll Ans(ll n) ll sum =1; for(int i=0;i<p_num && p[i]<=n;i++) if(n%p[i]==0) int cnt=0; while(n%p[i]==0) n=n/p[i]; cnt++; sum=sum*(cnt+1); if(n>1) sum=sum*2; return sum; int main() ola(); int T; ll a,b; scanf("%d",&T); for(int i=1;i<=T;i++) scanf("%lld %lld",&a,&b); if(a/b < b) printf("Case %d: %lld\n",i,0); continue; ll cnt = Ans(a)/2; for(int j=1;j<b;j++) if(a%j==0) cnt--; printf("Case %d: %lld\n",i,cnt); return 0;
数论专题hdu2582
本题题意:给出公式f(n)=gcd(3)+...+gcd(n),而gcd(n)=gcd(C(1,n),...,C(n-1,n)),求出f(n)的值。 代码如下: #include<iostream>usingnamespacestd;typedeflonglongll;constintMax=1000000;intprime[Max+1];llsum[Max+1];vo 查看详情
数论专题hdu2674
本题题意:求n!mod2009,范围是0-10e9。 代码如下: #include<iostream>usingnamespacestd;constintmod=2009;typedeflonglongll;llJ[41];voidJe(){J[0]=J[1]=1;for(inti=2;i<=40;i++){J[i]=J[i-1]*i%mod;}}int 查看详情
第三题
数论三题简单题比赛排名质因数(代码片段)
这三个题思路都不复杂,就放在一起简单题题面计算由于最终结果可能超过int的范围,因此请将运算结果对1000000007取模。一个整数T(T<=200000),表示数据组数。每行两个整数m,n。(0<m<=n<=2000)分析就是求组合数啊C(n,m)... 查看详情
数论专题hdu2197
本题题意:求长度为n的本元串的个数,本元串就是无法由几个相同的子串拼接的01串。 代码如下: #include<iostream>usingnamespacestd;typedeflonglongll;constintmod=2008;llpow_(lla,llb,llmod){llsum=1;while(b){if(b&1){sum=s... 查看详情
数论专题hdu2104
本题题意:有N个人,一个人从1开始走,每次间隔M-1个人,问他是否能走到所有的点,并回到原点。 代码如下: #include<cstdio>usingnamespacestd;intgcd(inta,intb){intr;while(b){r=a%b;a=b;b=r;}returna;}intmain(){intm,n;while(~sc... 查看详情
数论专题hdu2669
本题题意:关于式子aX+bY=1,给出a、b,求X,Y(X为最小非负整数)。 代码如下: #include<iostream>usingnamespacestd;typedeflonglongll;llexgcd(lla,llb,ll&x,ll&y,ll&d){if(!b){x=1;y=0;d=a;}else{exgcd(b,a%b,y,x,d);y 查看详情
数论专题poj1061
本题题意:两只青蛙,一只从x开始跳,每次跳m格,一只从y开始跳,每次跳n格,地球的线长为L米,问两蛙是否可能相遇,以及相遇的时刻。代码如下:#include<iostream>usingnamespacestd;typedeflonglongll;llexgcd(lla,llb,ll&x,ll&y,ll&a... 查看详情
2019年9月14日(数论专题考试)
汗~,差点爆零(QwQ)……(prob2:saber)(upd):题意以后都不写了,反正写了日期,去文件里找。题目数学?可惜我开始跑的是暴力……思路肯定是总方案减去不合法方案,那么就有两种主流思路:暴力30分,因为不合法情况是且仅是要... 查看详情
kuangbin数论专题记录
A:每个学生所得的bamboo的score的值必须大于或等于他的幸运数字,bamboo的score值就是其长度x的欧拉函数值(即小于x且与x互质的数的个数)每单位长度花费1Xukha,求买这些bamboo的最小花费。此题关键:素数(x)的欧拉函数值(x-1... 查看详情
uestc电子科大专题训练数论e
UESTC1716题意:中文题思路:先把男生排列,由于是圆桌,所以每个位置都是一样的,排列方案为A(n,n)/n,再对女生排列,由于男生已经在座位上了,所以此时每个座位是不一样的,方案数为A(n,n)AC代码:#include"iostream"#include"string.h... 查看详情
可信考试第三题-20220722
/**Copyright(c)HuaweiTechnologiesCo.,Ltd.2019-2020.Allrightsreserved.*Description:上机编程认证*Note:缺省代码仅供参考,可自行决定使用、修改或删除*只能importGo标准库 查看详情
第三题(非实验5)
#ifndefBOOK_H#defineBOOK_H#include<string>usingstd::string;classBook public: Book(stringisbnX,stringtitleX,floatpriceX):isbn(isbnX),title(titleX),price(priceX) voidprint(); private: string 查看详情
c_cpp第三题(代码片段)
数论与数学专题练习(201802~201805)
...n.net/suncongbo/article/details/79357927上次打cf的时候一道水水的数论题(强推式子)都没有做出来,于是决定开始数论专题练习。以后将不断进行update.刷题记录UPD1.T1.(20180214)ACcodeforces933Bhttp://codeforces.com/problemset/problem/933/B题解:略UPD2.T2.(201... 查看详情
uestc电子科大专题训练数论g
UESTC1718题意:在01串中选出长度为偶数,并且前一半是0,后一半是1的子序列方案数思路:组合数+范德蒙恒等式记录每个数前面0的个数pi和后面1的个数nexi(包括本身)遍历到第k个数的时候,如果是0那么方案数为(因为计算第i... 查看详情
uestc电子科大专题训练数论l
UESTC1723题意:中文题思路:预处理,dp[i][j]表示将j个人放到i个房间里,则可以得到dp[i][j]=dp[i][j-1]*i+dp[i-1][j-1],递推式的理解,第一:当有i个房间,j-1个人的时候方案数已知为dp[i][j-1],则当增加一个人的时候,第j个人可以选择i... 查看详情
java实验九第三题
答案我也是嫖的!https://blog.csdn.net/qq_37246345/article/details/1032650371importjava.io.BufferedReader;2importjava.io.BufferedWriter;3importjava.io.File;4importjava.io.FileInputStream;5importjava.io.FileWri 查看详情