zzuli 1902 (985的因子对难题)

2024-08-21 19:18
文章标签 因子 难题 985 zzuli 1902

本文主要是介绍zzuli 1902 (985的因子对难题),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 打表      985的因子对难题

Description

985有n个正整数,他想知道存在多少个不同的因子对(a[i], a[j])使得
1 <= i, j <= n && i != j && a[j] % a[i] == 0,其中i和j是元素的下标。
特别地,他认为(a[i],a[j])与(a[j],a[i])是一样的因子对。

Input

第一行输入一个整数t,代表有t组测试数据。
每组数据占两行,第一行输入一个n代表元素个数,下面一行输入n个整数a[]。
注:1 <= t <= 30,1 <= n <= 1e5,1 <= a[] <= 1e6。

Output

一个整数代表最后的答案。

Sample Input

2
5
1 2 3 4 5
5
2 2 2 2 2

Sample Output

5
10

题解:辣鸡看到这题完全没思路。思路是,记录每个数字以及出现的次数,利用打表找出每个数存在的因子个数,若存在n个相同的数字,该数字的因子对个数为n*(n-1)/2,还需要加上他的因子个数,因为这wa了,打表也不熟练。

//因子对 
#include<cstdio>
#include<cmath>
#include<algorithm>
#include<cstring>
using namespace std;int main(){int t,n,i,j,y;int num[101010];int f[101010];scanf ("%d",&t);while (t--){scanf ("%d",&n);int maxi=0;long long sum=0;memset (num,0,sizeof(num));memset (f,0,sizeof(f));for (i=1;i<=n;i++){scanf ("%d",&y);num[y]++;//记录该数字出现的个数maxi=max(maxi,y);//找出最大的数字,供下边循环找因子使用}for (i=1;i<=maxi;i++){if (!num[i]) continue;for (j=i+i;j<=maxi;j+=i){//打表,还需要再熟练f[j]+=num[i];}}for (i=1;i<=maxi;i++){if (num[i]){if (num[i]>1)sum+=num[i]*(num[i]-1)/2;sum+=num[i]*f[i];//这一步不论是不是存在多个相同数字,都有用}}printf ("%lld\n",sum);}return 0;
}


这篇关于zzuli 1902 (985的因子对难题)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1094044

相关文章

线性因子模型 - 独立分量分析(ICA)篇

序言 线性因子模型是数据分析与机器学习中的一类重要模型,它们通过引入潜变量( latent variables \text{latent variables} latent variables)来更好地表征数据。其中,独立分量分析( ICA \text{ICA} ICA)作为线性因子模型的一种,以其独特的视角和广泛的应用领域而备受关注。 ICA \text{ICA} ICA旨在将观察到的复杂信号

接口自动化三大经典难题

目录 一、接口项目不生成token怎么解决关联问题 1. Session机制 2. 基于IP或设备ID的绑定 3. 使用OAuth或第三方认证 4. 利用隐式传递的参数 5. 基于时间戳的签名验证 二、接口测试中网络问题导致无法通过怎么办 1. 重试机制 2. 设置超时时间 3. 使用模拟数据 4. 网络问题的预检测 5. 日志记录与错误分析 6. 切换网络环境 7.

HDU2521(求因子个数)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2521 解题思路: 数据量不大,直接O(n)遍历,对每个数求其因子个数,找出最大的即可。 完整代码: #include <functional>#include <algorithm>#include <iostream>#include <fstream>#includ

连分数因子分解法——C语言实现

参考网址:连分数分解法寻找整数的因子(Python)-CSDN博客 大数运算:C语言实现 大数运算 加减乘除模运算 超详细_64编程 加减乘除取模 复杂运算-CSDN博客 ‌连分数因子分解法‌是一种用于大整数因子分解的算法,它是计算数论中的一个重要方法。连分数因子分解法通过寻找x2≡y2 (mod p)x2≡y2 (mod p)的形式来分解N。具体来说,这种方法涉及到计算N的简单连分数展开,并

NYOJ 745 蚂蚁的难题(二)

OJ题目 : http://acm.nyist.net/JudgeOnline/problem.php?pid=745 描述 下雨了,下雨了,蚂蚁搬家了。 已知有n种食材需要搬走,这些食材从1到n依次排成了一个圈。小蚂蚁对每种食材都有一个喜爱程度值Vi,当然,如果Vi小于0的时候,表示蚂蚁讨厌这种食材。因为马上就要下雨了,所以蚂蚁只能搬一次,但是能够搬走连续一段的食材。时间紧急,你快帮

js算法题,给任意一个偶数,找出他的所有的质数因子

/*给任意一个偶数,找出他的所有的质数因子*/ function primeFactor(n){     var factors=[],            divistor=2;     if(typeof n !=='number'||!Number.isInteger(n)){          return 0;     }; //如果不是偶数返回0,如果是0,返回0

渣土车识别算法解决城市治理难题

随着城市化进程的加速,渣土车作为建筑工程中不可或缺的运输工具,其频繁的穿行和装载运输过程往往引发一系列问题,如超载、扬尘污染、乱倒渣土等,对城市环境和交通秩序造成了不良影响。为了解决这些问题,采用基于视觉分析的渣土车识别算法已成为现代城市治理中一种有效的技术手段。本文将从背景、技术实现、功能优势和应用方式等多个方面,探讨如何利用视觉分析技术来识别和管理渣土车,从而实现智能化、精细化的城市管理。

Pollard‘s rho因子分解法——C语言实现

Pollard's rho的核心思想其实就是求p和q的倍数,而这样的倍数有无穷多个,当N值很小的时候,成功率还是很高的,当N值很大时,该算法就不灵了。 #include <stdio.h>#include <stdlib.h>int gcd(int x,int y){int z;while(y){z=x,x=y,y=z%y;}return x;}int f(int x,int c,i

智能电话机器人电销- 完美解决企业营销扩展难题

在互联网时代,企业营销已经离不开数字化转型。智能电话机器人电销作为数字化营销的一种方式,受到越来越多企业青睐。那么,什么是智能电话机器人电销?为什么它能够解决企业营销扩展难题?本文将从多个方面进行解读,并分析其商业价值与应用前景。 什么是智能电话机器人电销? 智能电话机器人电销是利用人工智能技术,通过电话呼叫并与潜在客户进行对话,收集信息、建立客户档案、进行客户分类和筛选等一系列营销行为的方式

Xinstall助力App运营,下载唤起不再是难题!

在App推广和运营的道路上,你是否遇到过这样的困扰:用户点击下载链接后,却无法直接唤起App,导致用户体验不佳,甚至造成用户流失?别担心,今天我们就来科普一个神器——Xinstall,它能帮助你轻松解决App下载唤起的痛点,提升用户转化率和活跃度! 首先,让我们来了解一下什么是下载唤起App。简单来说,就是用户通过点击链接或扫描二维码等方式,能够直接下载并唤起指定的App。这在App推广和运营