山东省第六届ACM省赛 H---Square Number 【思考】

题目描述

In mathematics, a square number is an integer that is the square of an integer. In other words, it is the product of some integer with itself. For example, 9 is a square number, since it can be written as 3 * 3.

Given an array of distinct integers (a1, a2, ..., an), you need to find the number of pairs (ai, aj) that satisfy (ai * aj) is a square number.

输入

The first line of the input contains an integer T (1 ≤ T ≤ 20) which means the number of test cases.

Then T lines follow, each line starts with a number N (1 ≤ N ≤ 100000), then N integers followed (all the integers are between 1 and 1000000).

输出

For each test case, you should output the answer of each case.

示例输入

1
5
1 2 3 4 12

示例输出

2题目:每组给你n个数,问这n这数中存在多少对这样的(ai, aj), ai*aj的乘机是一个完全平方数。输出对数。

code:
#include <stdio.h>
#include  <string.h>

bool prime(int x)
{
    for(int i=2; i*i<=x; i++){
        if(x%i==0) return false;
    }
    return true; //判断素数
}

int a[1000], cnt[1000000+10];

int main()
{
    //将100万以内的"素数的完全平方数"打表
    int e=0;
    for(int i=2; i*i<=1000000; i++){
        if(prime(i))
            a[e++]=i*i;
    }
    int tg; scanf("%d", &tg);
    int n, i, j;
    while(tg--)
    {
        scanf("%d", &n);
        int dd;
        int mm=1;
        memset(cnt,0,sizeof(cnt));
        while(n--){
            scanf("%d", &dd);
            for(i=0; i<e&&a[i]<=dd; i++){
                while(dd%a[i]==0)
                    dd/=a[i];
            }
            if(dd>mm) mm=dd;
            cnt[dd]++;
        }
        long long ans=0;
        for(j=1; j<=mm; j++){
            ans+=(cnt[j]*(cnt[j]-1)/2);
        }
        printf("%lld\n", ans);
    }
}

				
时间: 2024-10-15 18:20:47

山东省第六届ACM省赛 H---Square Number 【思考】的相关文章

没有什么不可能—记山东省第六届ACM程序设计竞赛(退役总结帖)

大一下学期,第一次听说了ACM这个词,当时每周六也开设了培训课,但我好像一次也没有去过,当时对这个词并没有什么太大的印象.后来学院里引进了自己的OJ,那时候我连基本的输入输出格式都不懂,当经历了一堆的WA,TLE之后突然换来的一个AC竟带来了莫名的喜悦.后来学院举办了第一届ACM程序设计竞赛,我报名参加了新秀赛和团队赛.三个小时的新秀赛,当时貌似做出了三道,意外的拿到了一等奖,这也成为了我大学生活的一个重要转折点.四个小时的团队赛,做得很艰难,各种不会,最后只做出了一道,排在三等奖的末尾.比赛之

河南省第六届acm省赛 异 形 卵(暴力)

异 形 卵 时间限制:1000 ms  |  内存限制:65535 KB 难度:2 描述 我们探索宇宙,是想了解浩瀚星空的奥妙,但我们却很少意识到宇宙深处藏匿的危险,它们无时无刻不紧盯着我们的地球.如果外星人拜访我们,结果可能与哥伦布当年踏足美洲大陆不会有什么两样,这是历史,也是现实. 在ZDM-777星球上发现的休眠异形卵,其外表与常见的卵不同,表面被一层石墨覆盖.当人走近时,那层石墨开始消融,能看到里面的异形卵正在活动,异形卵是活物,具备一些热量或压力传感器这些基本的中枢神经系统,通过感知周

山东省第六届ACM竞赛 Lowest Unique Price(set+map)分析,总结

题目链接:http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=3252 题意不难理解:每个人依次竞价投标 有三种操作 b 投标, c 撤销投标, q查询: 每次查询的结果是 Lowest Unique Price 也就是 "最小的独一无二的数",如果没有输出 "none": 比赛的时候我给队友讲完这道题目的题意,他们都说用线段树做,我也没多想,感觉题目不难,他们应该能做

2016 年宁波工程学院第七届ACM校赛题解报告

2016 年宁波工程学院第七届ACM校赛题解报告 本题解代码直接为比赛代码,仅供参考. A,B,C,D,G,H,J,K,L,M 来自 Ticsmtc 同学. F 来自 Gealo 同学. E,I 来自Alex 学长. Promblem A :    Two Sum 时间限制: 1 Sec  内存限制: 64 MB 题目描述: 给出n个数,另外给出?个整数S,判断是否可以从中取出2个数,使得这两个数的和是S. 输入: 第?行有个整数T(1 <= T <= 10),代表数据组数. 对于每组数据,第

2014山东省“浪潮杯”第五届ACM省赛总结

一次比赛做一次总结,弱菜又来总结了-- 我这种大四的又死皮赖来混省赛了,貌似就我和山大威海的某哥们(不详其大名)了吧.颁奖前和他聊天,得知他去百度了,真是不错,ORZ之. 比赛流水账: 题目目前不知道哪有,过几天填坑. 没发题目前,我们赌A题可能是水题,由于我是主coder,我去读A,剩下的一个从前往后,一个从后往前. 结果--,看到A有一个貌似是几何的图--,我还是硬头皮读了.读到一半,3分钟刷榜,发现E有出,让ZK读E,ZK先告诉我了B题题意,转而读E.B题是一个有环形关系的期望,我扫了一下

第5届ACM校赛—矩阵

矩阵 题目描述 给定一个n x m 的矩阵,每次操作,你可以对矩阵的某一个元素加上或减去一个整数值d,求最小的操作次数,使得矩阵的所有元素都相同,如果不能实现,输出-1. 输入 输入包含多组测试数据,对于每组测试数据: 第一行为三个整数  , m≤500,1≤d≤10000). 接下来 m 个整数,第 行第 个整数为ij(1  ij≤10). 当n=m=d=0 时代表输入结束. 输出 对于每组测试数据,输出一个整数,为最小操作次数,如果不能实现,输出-1. 64-bit,用long long 定

山东省第六届省赛 H题:Square Number

Description In mathematics, a square number is an integer that is the square of an integer. In other words, it is the product of some integer with itself. For example, 9 is a square number, since it can be written as 3 * 3. Given an array of distinct

山东省第六届“浪潮杯”ACM程序设计大赛:D:Square Number

Description: In mathematics, a square number is an integer that is the square of an integer. In other words, it is the product of some integer with itself. For example, 9 is a square number, since it can be written as 3 * 3. Given an array of distinc

&amp;quot;浪潮杯&amp;quot;第六届ACM山东省省赛山科场总结

从空间拷过来的.尽管已经过去一个月了.记忆犹新 也算是又一次拾起这个blog Just begin 看着一群群大牛还有队友男神的省赛总结都出了 我最终也耐不住寂寞 来做个流水账抒抒情好了 第一次省赛 心情非常激动 也掺杂着一点小紧张 事实上最想吐槽的是伙食 真的真的真的真的吃不饱.. . 只是非常感谢我们xh老师提供的x牛和x力架 正式赛的时候根本没心思吃午饭 x牛确实提供了非常多能量(我真的没有打广告 你看 都打码了 嗯) 转回正题 说好的是来做流水账的 九号早七点集合从淄博出发 睡到了大青岛