题意:

ttt 组数据,第一个给定飞毯的面积为 sss,第二个是毯子的最短的边的长度大于等于这个数,毯子是矩形但不是正方形。

思路:

求出 sss 的所有因子,因为不可能是矩形,所以可以除以 222,最后暴力求出最短边长以内的因子,相减得出答案。

想要求出s以内的因子数量,就用到了唯一分解定理,先求素数想要求出s以内的因子数量,就用到了唯一分解定理,先求素数想要求出s以内的因子数量,就用到了唯一分解定理,先求素数

唯一分解定理:

任何一个大于1的自然数 N,如果N不为质数,那么N可以唯一分解成有限个质数的乘积N=P1a1 P2a2 P3a3 … Pnan,这里P1<P2<P3…<Pn均为质数,其中指数ai是正整数。这样的分解称为 N 的标准分解式

(1)一个大于1的正整数N,如果它的标准分解式为:N=P1a1 P2a2 P3a3 … Pnan ,那么它的正因数个数为 sum=(1+a1)(1+a2)(1+a3)(1+an)。

(2) 它的全体正因数之和为 (1+p11+p12+…+p1a1)(1+p21+p22+…+p2a2)(1pn1+pn2+…+pnan)。

LightOJ1220:LightOJ 1220:LightOJ1220: x=bp,求出最大的 p 可以是几?(LightOJ 1220 Mysterious Bacteria)

即求出 x的标准分解式中的所有a的最大公约数。

  1. //LightOJ - 1341
  2. #include<stdio.h>
  3. #include<math.h>
  4. #include<vector>
  5. using namespace std;
  6. int main()
  7. {
  8. int t,z=1;
  9. bool book[1000910]= {0};
  10. long long s,l;
  11. vector<int>v;
  12. for(int i=2; i<=1000010; i++)
  13. if(!book[i])
  14. for(int j=i*2; j<=1000010; j=j+i)
  15. book[j]=1;
  16. for(int i=2; i<=1000008; i++)
  17. if(!book[i])
  18. v.push_back(i);
  19. scanf("%d",&t);
  20. while(t--)
  21. {
  22. scanf("%lld%lld",&s,&l);
  23. if(l>=sqrt(s))
  24. {
  25. printf("Case %d: 0\n",z++);
  26. continue;
  27. }
  28. long long sum=0;
  29. for(long long i=1; i<l; i++)
  30. if(s%i==0)
  31. sum++;
  32. long long i=0,ans=1;
  33. while(i<v.size()&&v[i]<s)//素数小于 s
  34. {
  35. int tt=0;
  36. while(s%v[i]==0)
  37. {
  38. tt++;
  39. s=s/v[i];
  40. }
  41. ans=ans*(1+tt);//(1+a1)*(1+a2)*(1+a3)*.....*(1+an) //因子的数量
  42. i++;
  43. }
  44. if(s>1)//若s>1,则为素数
  45. ans=ans*2;
  46. ans=ans/2;//几对素数
  47. printf("Case %d: %lld\n",z++,ans-sum);
  48. }
  49. return 0;
  50. }
  1. //LightOJ 1220
  2. #include<string.h>
  3. #include<vector>
  4. #include<stdio.h>
  5. using namespace std;
  6. int gcd(int a,int b)//求最大公约数
  7. {
  8. return a%b==0?b:gcd(b,a%b);//辗转相除法
  9. }
  10. int main()
  11. {
  12. vector<int>v;
  13. bool book[1010000];
  14. memset(book,0,sizeof(book));
  15. book[1]=1;
  16. for(int i=2; i<=1000100; i++)//素数筛
  17. if(!book[i])
  18. {
  19. v.push_back(i);//储存素数
  20. for(int j=i*2; j<=1000100; j=j+i)
  21. book[j]=1;
  22. }
  23. int t,z=1,flag=0;
  24. long long n;
  25. scanf("%d",&t);
  26. while(t--)
  27. {
  28. flag=0;
  29. scanf("%lld",&n);
  30. if(n<0)
  31. {
  32. n=n*-1;
  33. flag=1;
  34. }
  35. int ans=0;
  36. for(int i=0; i<v.size()&&v[i]*v[i]<=n; i++)
  37. {
  38. if(n%v[i]==0)
  39. {
  40. int tt=0;
  41. while(n%v[i]==0)
  42. {
  43. n=n/v[i];
  44. tt++;
  45. }
  46. if(ans==0)//第一次求最大公约数
  47. ans=tt;
  48. else
  49. ans=gcd(ans,tt);// x=b^p p=gcd(a1,a2,a3...,an)
  50. }
  51. }
  52. if(n > 1)//存在n>1时 指数的最大公约数为1 n此时为素数
  53. ans = gcd(ans, 1);
  54. if(flag == 1)
  55. {
  56. while(ans % 2 == 0)
  57. ans >>= 1;
  58. }
  59. printf("Case %d: %d\n",z++,ans);
  60. }
  61. return 0;
  62. }

LightOJ - 1341 Aladdin and the Flying Carpet 唯一分解定理LightOJ 1220Mysterious Bacteria的更多相关文章

  1. LightOJ 1341 - Aladdin and the Flying Carpet (唯一分解定理 + 素数筛选)

    http://lightoj.com/volume_showproblem.php?problem=1341 Aladdin and the Flying Carpet Time Limit:3000 ...

  2. LightOJ1341 Aladdin and the Flying Carpet —— 唯一分解定理

    题目链接:https://vjudge.net/problem/LightOJ-1341 1341 - Aladdin and the Flying Carpet    PDF (English) S ...

  3. LightOJ 1341 Aladdin and the Flying Carpet(唯一分解定理)

    http://lightoj.com/volume_showproblem.php?problem=1341 题意:给你矩形的面积(矩形的边长都是正整数),让你求最小的边大于等于b的矩形的个数. 思路 ...

  4. LightOJ 1341 Aladdin and the Flying Carpet 数学

    题意:给个矩形的面积a,和矩形的最小边长b,问有多少种矩形的方案(不能是正方形) 分析:a可以写成x,y,因为不能是正方形,所以设x<y,那么x<sqrt(a),y>sqrt(a) ...

  5. [LightOJ 1341] Aladdin and the Flying Carpet (算数基本定理(唯一分解定理))

    题目链接: https://vjudge.net/problem/LightOJ-1341 题目描述: 问有几种边长为整数的矩形面积等于a,且矩形的短边不小于b 算数基本定理的知识点:https:// ...

  6. LightOJ 1341 - Aladdin and the Flying Carpet 基本因子分解

    http://www.lightoj.com/volume_showproblem.php?problem=1341 题意:给你长方形的面积a,边最小为b,问有几种情况. 思路:对a进行素因子分解,再 ...

  7. LightOJ 1341 - Aladdin and the Flying Carpet

    题目链接:http://lightoj.com/volume_showproblem.php?problem=1341 题意:给你地毯面积和最小可能边的长度,让你求有几种组合的可能. 题解:这题就厉害 ...

  8. LightOJ 1341 Aladdin and the Flying Carpet【整数分解】

    题目链接: http://lightoj.com/login_main.php?url=volume_showproblem.php?problem=1341 题意: 给定一个数,将其拆分成两个数的乘 ...

  9. LightOJ 1341 Aladdin and the Flying Carpet 算数基本定理

    题目大意:给出面积n,和最短边m,求能形成的矩形的个数(不能为正方形). 题目思路:根据算数基本定理有: 1.每个数n都能被分解为:n=p1^a1*p2^a2*^p3^a3……pn^an(p为素数); ...

随机推荐

  1. 文件传送协议FTP

    文件传送协议FTP 1.1.概述 文件传送协议 FTP (File Transfer Protocol) 是因特网上使用得最广泛的文件传送协议. FTP 提供交互式的访问,允许客户指明文件的类型与格式 ...

  2. PAT-进制转换-B1022 D进制的A+B (20分)

    题目描述: 输入两个非负10进制整数A和B(≤230-1),输出A+B的D(1<D≤10)进制数. 输入格式: 输入在一行中依次给出3个整数A.B和D. 样例: 输入:123 456 8 输出: ...

  3. 前端每日实战:145# 视频演示如何用纯 CSS 创作一个电源开关控件

    效果预览 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/PdMyJd 可交互视频 此视频是可 ...

  4. Android html5 控制video currentTime不准确,精确,解决办法。

    早在flash时代 我们控制视频播放指定时间位置的画面也会有不准确的情况, 具体情况表现为:video.seek(time)   而实际画面会跳到此时间附近(1-2秒)的画面 而HTML5 我们通过 ...

  5. SAP CRM Transaction处理中的权限控制

    当试图打开一个Opportunity时, 系统会进行如下一系列的权限检查: 1. 检查Authorization object CRM_ORD_OP: 此处会检查当前user的partner func ...

  6. vue如何新建一个项目

    第一步:安装node 首先下载安装node 安装步骤参考:https://www.cnblogs.com/qdwz/p/10820554.html window+R打开控制命令行cmd node -v ...

  7. vue环境搭建过程中,npm权限不足问题

    今天在用git bash进行全局安装vue-cli的时候,报错: 必须以管理员权限进行安装才行.所以用cmd命令工具,点击右键命令提示符cmd--------以管理员身份运行--------cd进入到 ...

  8. centOS 6.5 yum升级 gcc4.8 然后又退回来4.4

    CentOS 6.5 用了很多年了,一直舍不得省7 . 由于要用到 c++ 11 ,所以决定升级一下. 为了省事我选择用 yum 方式升级,结果最后还是不能用,差点搞坏,这是真机,重装麻烦了. get ...

  9. JAVA校内赛

    第一题: 问题描述 在计算机存储中,15.125GB是多少MB?答案提交 这是一道结果填空的题,你只需要算出结果后提交即可.本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分. ...

  10. 事务特性,事务的隔离级别以及spring中定义的事务传播行为

    .katex { display: block; text-align: center; white-space: nowrap; } .katex-display > .katex > ...