博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
51nod 1179 最大的最大公约数
阅读量:5315 次
发布时间:2019-06-14

本文共 1546 字,大约阅读时间需要 5 分钟。

一直Runtime error  

后来发现数组开小了 调了半天

大概两种写法吧

第一种是枚举每个值 把他的因子都记录  最后从最大的因子 倒着数 这样子

#include
using namespace std;const int maxn = 1000000+100;int s[maxn];int t[maxn];int main (){ int n; scanf("%d",&n); for(int i=1;i<=n;i++) scanf("%d",&s[i]);//mx=max(mx,s[i]); //t[1] = 2;//如果没有的话就是1了 int mx = 1; for(int i=1;i<=n;i++) { int r = sqrt(s[i]); for(int j=1;j<=(r+1);j++) { if(s[i]%j==0) { t[j]++; t[s[i]/j]++; mx =max(mx,max(j,s[i]/j)); //while(s[i]%j==0) //{ // s[i]/=j; // } //printf("%d ",j); } } //puts(""); } for(;mx>=1;mx--) if(t[mx]>=2) { printf("%d\n",mx); return 0; }}

 

 

第二种 类似素数筛 的 一种筛法  不过是倒着来的

 

#include
using namespace std;const int maxn = 1000000+100;//int s[maxn];int t[maxn];int main (){ int n; scanf("%d",&n); int mx =0;//记录最大的 for(int i=1;i<=n;i++) { int s; scanf("%d",&s); mx = max(s,mx); t[s]++; } int i=mx; //cout<
<
=1;i--)//用到了筛法类似的东西 { int sum=0; for(int j=i;j<=mx;j+=i) { sum += t[j]; if(sum>=2) break; } if(sum>=2) break; } //for(int i=1;i<=25;i++) //printf("%d ",t[i]); printf("%d\n",i);}

 

转载于:https://www.cnblogs.com/Draymonder/p/7403049.html

你可能感兴趣的文章
常见浏览器兼容性问题与解决方案?
查看>>
2016福州大学软件工程第四次团队作业-系统设计成绩汇总
查看>>
Codeforces 924D Contact ATC (看题解)
查看>>
Codeforces 173E Camping Groups 线段树
查看>>
【Java基础】Java中的持久属性集Properties
查看>>
NUMPY数据集练习 ----------SKLEARN类
查看>>
Python 2.X 版本 600行入门基础
查看>>
windows文件夹嵌套太多,导致无法删除的解决方法
查看>>
下拉刷新:继承listView控件
查看>>
SqlServer之代码块相关
查看>>
我的手机 不支持箭头函数
查看>>
TSQL语句中的Like用法
查看>>
ExtJs 4.x Ajax简单封装
查看>>
----斐波那契数列---eval函数----类递归思想 栈 进出 思想
查看>>
Yii2 的快速配置 api 服务 yii2-fast-api
查看>>
javascript学习笔记 null和undefined
查看>>
jquery easyui datagrid getSelections用法
查看>>
PHP 学习1.1
查看>>
Linux学习之服务器搭建——DHCP服务器
查看>>
垃圾收集算法
查看>>