Square Number-3258拆平方
来源:互联网 发布:oppo应用分身软件 编辑:程序博客网 时间:2024/05/22 00:23
题意:
询问给定的数字 有多少对两两相乘是一个平方数。
思路:
n=x*x*y
m=z*z*y
n*m =x*x *z*z *y *y
因此只要是一次方相乘的数字相同就是一对。 例如 32= 2*2 * 2*2 * 2 8= 2*2 *2 相乘就是一组满足条件的解。
之后从抽象出来的数组中求组合Ca[i] 2
#include <iostream>#include <cstdio>#include <queue>#include <map>#include <cmath>#include <algorithm>#include <stack>#include <cstring>using namespace std;int s[1000005];int a[1000005];int prime[10005];int main(){ int cnt=0; for(int i=2;i<=1000;i++) { for(int j=2;j*j<=i;j++) { if( i%j==0 ) { s[i]=1; break; } } if(!s[i]) prime[++cnt]=i; } int t; scanf("%d",&t); while(t--) { memset(a,0,sizeof(a)); int n; scanf("%d",&n); int res=0; for(int i=1;i<=n;i++) { int t; scanf("%d",&t); for(int j=1;j<=cnt;j++) { int k=prime[j]*prime[j]; if(t<k) break; while(t%(k)==0) { t/=k; } } a[t]++; } for(int i=1;i<=1000000;i++) { res+=(a[i]*(a[i]-1))/2; } printf("%d\n",res); } return 0;}
0 0
- Square Number-3258拆平方
- Square Number(完全平方数)
- 【SDUT 3258】Square Number
- sdut 3258 Square Number
- SDUT 3258 Square Number
- 山东省第四届ACM省赛题——Square Number(平方数的性质)
- 山东省第六届ACM大学生程序设计竞赛-Square Number(完全平方数)
- Square Number
- Square Number
- sdut 3258 Square Number 打表
- SDUT 3258 Square Number【思维+高效预处理】
- float number square root
- Lesson2 Square number
- [UVA](11461)Square Numbers ---完全平方数
- 山东理工3258 Square Number(质因数分解+乱搞)
- 平方分割poj2104K-th Number
- SDut 3257 Cube Number && SDUT 3258 Square Number 超详细题解(数学)
- (平方幂母函数)hdu 1398 Square Coins
- 字符串过滤
- LinuxC学习笔记
- 大数据的价值是如何得以彰显的?
- 深度学习
- JAVA报错:Variable 'vv' is accessed from within inner class, needs to be declared final
- Square Number-3258拆平方
- Notepad++ 安装以及主题配置
- 聊一聊jsp的标准动作
- VIM文件编码识别与乱码处理
- 1023: 最大数问题
- 1.12 关系的完整性
- Vi编辑器的常用命令
- GetLastError函数
- [AC自动机 + DP] BZOJ1030: [JSOI2007]文本生成器