山东省第六届“浪潮杯”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 distinct integers (a1, a2, ..., an), you need to find the number of pairs (ai, aj) that satisfy (ai * aj) is a square number.

Input:

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).

Output:

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

Sample Input:

1

5

1 2 3 4 12

Sample Output:

2

参考代码:

 1 #include <iostream>
 2 #include <stdio.h>
 3 #include <cmath>
 4 #include <cstring>
 5 #include <string>
 6 #include <algorithm>
 7 #include <cstdlib>
 8 #define M 100000 + 1000
 9 using namespace std;
10 int a[M] = {2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509,521,523,541,547,557,563,569,571,577,587,593,599,601,607,613,617,619,631,641,643,647,653,659,661,673,677,683,691,701,709,719,727,733,739,743,751,757,761,769,773,787,797,809,811,821,823,827,829,839,853,857,859,863,877,881,883,887,907,911,919,929,937,941,947,953,967,971,977,983,991,997};
11 int b[M];
12 int fun(int n)
13 {
14     for(int i = 0; i < 168; i ++)           //这里i一定不能大于等于168,不然可能除0;可见边界并不是越大越好:
15     {
16         while(n % (a[i] * a[i]) == 0)
17             n = n / (a[i] * a[i]);
18         if(n < (a[i] * a[i]))
19             break;
20     }
21     return n;
22 }
23 int main()
24 {
25     //freopen("in.txt","r",stdin);
26     //freopen("out.txt","w",stdout);
27     int t;
28     scanf("%d",&t);
29     while(t --)
30     {
31         int n;
32         scanf("%d",&n);
33         for(int i = 0 ; i < n; i ++)
34         {
35             scanf("%d",&b[i]);
36             b[i] = fun(b[i]);
37         }
38         sort(b,b + n);
39         long long int cnt = 0;
40         for(int i = 0; i < n; i ++)
41         {
42             long long int temp = b[i];
43             long long int cnttemp = 0;
44             while(temp == b[i])                 //第一次把i ++写进了while里面,错了,查了好久检查不出错误。唉,i ++ 不是都能写进去的;
45             {
46                 cnttemp ++;
47                 i ++;                           //改到这里就对了
48             }
49             cnt = cnt + cnttemp * (cnttemp - 1) / 2;
50             i --;
51         }
52         printf("%lld\n",cnt);
53     }
54     return 0;
55 }

时间: 2024-09-29 18:01:09

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

2015第六届蓝桥杯全国软件大赛省赛(预赛)总结

这是我上大学以来第一次自发的写总结,这也许意味着我对大学的看法和接下来的大学生活都将有所改变吧.首先说说引导我写这篇总结的"人物"吧,RUI,从大一开始便是同学,直到大三成为了舍友.他的成绩一直很好,如果没记错的话,大一专业第一名,大二好像也是第一第二的,总之在班里一直名列前茅,在学习成绩里边,最让我羡慕的就是他的英语了,四级和六级都是一次过,并且,六级考了500多分(具体多少记不清了),呃...除了学习成绩好之外,专业能力更是没的说,在大一就加入了学院里的ACM实验室,编程能力那也是

“玲珑杯”第七届郑州轻工业学院ACM程序设计大赛 ------- D:社交网络

题目链接: http://acm.zzuli.edu.cn/problem.php?cid=1099&pid=3 题目大意: 国语题目,题意显而易见, 解题思路: 只需要对每一个节点进行假设,每一个节点可能是交际花的数目总数乘上概率就是这个节点是交际花的期望,把所有期望加和在一起输出就可以了, 忏悔篇: 比赛的时候,我们看到是求期望的,就读了读题意,然后放下了,然后放下了(这是多么错误的决定)..............,然后我们就与第一名擦肩而过了,多么痛的领悟,因为平时接触的求概率的题目较少

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

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

湖南省第六届 中信软件教育杯 ???学生程序设计大赛试题 第三题 数字整除

http://www.baidu.com/ 对于每组测试数据,输出一行,表示相应的n是否是17的倍数.1表示是,0表示否. Sample Input 34 201 2098765413 1717171717171717171717171717171717171717171717171718 0 Sample Output 1 0 1 0 Problem Source The Sixth Hunan Collegiate Programming Contest 题目连接:http://acm.hu

河南省第七届ACM程序设计大赛赛后总结

我们学校ACM集训开始于4月5号(清明节),5月25日在郑州解放军信息工程大学举办,集训耗时50天,但是感觉效果还行,但是也不是太好:我们也已经尽力了,虽然说只拿了个银牌,每份收获的背后,都会有辛勤的汗水,毕竟我们也努力了: 下面说说比赛中的问题:觉得吧,虽说模拟赛参加了很多,但是到了正式的比赛的时候,还是出现了紧张的情况,九点开始比赛,我们AC第一道题的时间是在十点半左右,题目不难而且曾经也做过啊,但是就是调试不好,越调试不好,心里就越急啊:刚开始看题的时间,我们都看了第一道题,意思也都明白,

2015年第六届蓝桥杯C/C++B组省赛题目解析

一.奖券数目 有些人很迷信数字,比如带“4”的数字,认为和“死”谐音,就觉得不吉利.虽然这些说法纯属无稽之谈,但有时还要迎合大众的需求.某抽奖活动的奖券号码是5位数(10000-99999),要求其中不要出现带“4”的号码,主办单位请你计算一下,如果任何两张奖券不重号,最多可发出奖券多少张. 请提交该数字(一个整数),不要写任何多余的内容或说明性文字. 分析:直接枚举10000-99999之间的数字,如果带4,直接排除:不带4的,记录一次,直到枚举完后输出. #include <iostream

第十一届GPCT杯大学生程序设计大赛完美闭幕

刚刚过去的周六(6月7号)是今年高考的第一天,同一时候也是GPCT杯大学生程序设计大赛颁奖的日子,以下我们用图文再回想一下本次大赛颁奖的过程. 评审过程的一些花絮<感谢各位评审这些天的付出!>: 感谢葡萄城给我的这次的锻炼的机会,让我学会了非常多,也明确了非常多!最重要的是感谢评委们!你们辛苦了! 感谢MTV-我在上嵌入式课-- 永远别忘了为你付出的人,成就永远不属于一个人.就是装也得怀有一颗谦卑感恩之心.版主大人受小弟一拜! 再次感谢品审大人,我们组还非常多要改进的,到时候一定要跟各路大神好

nyoj 1238 最少换乘 (河南省第八届acm程序设计大赛)

题目1238 题目信息 运行结果 本题排行 讨论区 最少换乘 时间限制:2000 ms  |  内存限制:65535 KB 难度:3 描述 欧洲某城是一个著名的旅游胜地,每年都有成千上万的人前来观光旅行.Dr. Kong决定利用暑假好好游览一番.. 年轻人旅游不怕辛苦,不怕劳累,只要费用低就行.但Dr. Kong年过半百,他希望乘坐BUS从住的宾馆到想去游览的景点,期间尽可量地少换乘车. Dr. Kon买了一张旅游地图.他发现,市政部门为了方便游客,在各个旅游景点及宾馆,饭店等地方都设置了一些公

nyoj1237 最大岛屿(河南省第八届acm程序设计大赛)

题目1237 题目信息 运行结果 本题排行 讨论区 最大岛屿 时间限制:1000 ms  |  内存限制:65535 KB 难度:2 描述 神秘的海洋,惊险的探险之路,打捞海底宝藏,激烈的海战,海盗劫富等等.加勒比海盗,你知道吧?杰克船长驾驶着自己的的战船黑珍珠1号要征服各个海岛的海盜,最后成为海盗王.  这是一个由海洋.岛屿和海盗组成的危险世界.面对危险重重的海洋与诡谲的对手,如何凭借智慧与运气,建立起一个强大的海盗帝国. 杰克船长手头有一张整个海域的海图,上面密密麻麻分布着各个海屿的位置及面