博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SDUT 3258 Square Number 简单数学
阅读量:4310 次
发布时间:2019-06-06

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

和上一题一样,把平方因子除去,然后对应的数就变成固定的

#include 
#include
#include
#include
using namespace std;typedef long long LL;const int N=1e6+5;const int INF=0x3f3f3f3f;int vis[N],prime[1005],cnt;void getprime(){ bool v[1020]; memset(v,0,sizeof(v)); for(int i=2;i*i<=1000;++i){ if(v[i])continue; for(int j=i*i;j<=1000;j+=i) v[j]=1; } for(int i=2;i<=1000;++i) if(!v[i])prime[++cnt]=i;}int main(){ int T,n; getprime(); scanf("%d",&T); while(T--){ memset(vis,0,sizeof(vis)); scanf("%d",&n); LL ans=0; for(int i=1;i<=n;++i){ int t;scanf("%d",&t); for(int j=1;j<=cnt&&prime[j]<=t/prime[j];++j){ int tmp=0; while(t%prime[j]==0)t/=prime[j],++tmp; if(tmp&1)t*=prime[j]; } ans+=vis[t]; // printf("%I64d\n",ans); ++vis[t]; } printf("%lld\n",ans); } return 0;}
View Code

 

转载于:https://www.cnblogs.com/shuguangzw/p/5527979.html

你可能感兴趣的文章
1、hadoop HA分布式集群搭建
查看>>
Wget下载终极用法和15个详细的例子
查看>>
centos 创建以日期为名的文件夹
查看>>
20155305乔磊2016-2017-2《Java程序设计》第一周学习总结
查看>>
最长回文字符串计算
查看>>
JSON一些简单应用
查看>>
海量数据处理 - 10亿个数中找出最大的10000个数(top K问题)(转)
查看>>
word交叉引用公式编号时和连公式一起引用
查看>>
P1163 第K极值 - Smart Online Judge
查看>>
Unity3D 新版本场景转换
查看>>
Android--获取App应用程序的大小
查看>>
Java Timer触发定时器
查看>>
Page Object设计模式
查看>>
程序的基础知识
查看>>
linux中的软连接和硬连接
查看>>
DFS专题 Prime Ring Problem
查看>>
jQuery源码解析 事件
查看>>
数字格式化NumberFormat
查看>>
ajax例子
查看>>
漫画阅读器ComicReader应用源码
查看>>