传送门


题目大意

给出电阻的并联公式,规定一个含有平方因子的数的1R=0\frac{1}{R}=0R1​=0。定义一个数的阻值为其所有的因子阻值并联求出的结果,问nnn以内并联后的最大的阻值是多少,输出分数形式

解题思路

打表不难知道在很大一段范围内答案是不变的,这体现在前几个数为1,2,6,30,210,2310...1,2,6,30,210,2310...1,2,6,30,210,2310...,不难发现恰好是1,1∗2,1∗2∗3,1∗2∗3∗5,1∗2∗3∗5∗7,1∗2∗3∗5∗7∗11...1,1*2,1*2*3,1*2*3*5,1*2*3*5*7,1*2*3*5*7*11...1,1∗2,1∗2∗3,1∗2∗3∗5,1∗2∗3∗5∗7,1∗2∗3∗5∗7∗11...

但是这个时候如何去找规律呢,我曾尝试质因数分解,然后递推去求,但是这样最后的因子个数会达到21002^{100}2100个,明显爆了。后来也想不出什么,去搜了题解,结果竟然是找了积性函数的规律。

设f(x)f(x)f(x)为xxx的因子并联的阻值,显然f(p)=11+1p=pp+1f(p)=\frac{1}{1+\frac{1}{p}}=\frac{p}{p+1}f(p)=1+p1​1​=p+1p​,而f(p1p2)=11+1p1+1p1p2+1p2=p1p2p1+2p1p2+p2=f(p1)f(p2)f(p_1p_2)=\frac{1}{1+\frac{1}{p_1}+\frac{1}{p_1p_2}+\frac{1}{p_2}}=\frac{p_1p_2}{p_1+2p_1p_2+p_2}=f(p_1)f(p_2)f(p1​p2​)=1+p1​1​+p1​p2​1​+p2​1​1​=p1​+2p1​p2​+p2​p1​p2​​=f(p1​)f(p2​)

使用Java大数,那么这样就能愉快的预处理了!

import java.math.BigInteger;
import java.util.*;public class Main {static long prime[] = new long[1005];static boolean vis[] = new boolean[1005];static BigInteger fz[] = new BigInteger[1005], fm[] = new BigInteger[1005];static BigInteger array[] = new BigInteger[1005];static int cnt, T, tot;static void getPrime() {for (int i = 0; i < 1005; i++) vis[i] = false;vis[1] = false;cnt = 0;for (int i = 2; i < 1005; i++) {if (!vis[i]) {prime[++cnt] = i;}for (int j = 1; j <= cnt && i * prime[j] < 1005; j++) {vis[(int) (i * prime[j])] = true;if (i % prime[j] == 0) break;}}}static void init() {BigInteger Max = BigInteger.ONE;for (int i = 1; i <= 100; i++) {Max = Max.multiply(BigInteger.TEN);}BigInteger res = BigInteger.ONE;fz[0] = BigInteger.ONE;fm[0] = BigInteger.ONE;array[0] = BigInteger.ZERO;for (int i = 1; i <= cnt; i++) {res = res.multiply(BigInteger.valueOf(prime[i]));//System.out.println(res);array[i] = res;if (res.compareTo(Max) > 0) {break;}fm[i] = fm[i - 1].multiply(BigInteger.valueOf(prime[i]).add(BigInteger.ONE));fz[i] = fz[i - 1].multiply(BigInteger.valueOf(prime[i]));//System.out.println(fz[i] + "/" + fm[i]);BigInteger gcd = fz[i].gcd(fm[i]);fz[i] = fz[i].divide(gcd);fm[i] = fm[i].divide(gcd);}}public static void main(String[] args) {getPrime();init();BigInteger n;Scanner scanner = new Scanner(System.in);T = scanner.nextInt();while ((T--) != 0) {n = scanner.nextBigInteger();if (n.compareTo(BigInteger.ONE) == 0) {System.out.println("1/1");continue;}int idx = 0;for (int i = 1; ; i++) {if (n.compareTo(array[i]) == 0) {idx = i;break;}if (n.compareTo(array[i - 1]) > 0 && n.compareTo(array[i]) < 0) {idx = i - 1;break;}}if (fz[idx] == fm[idx]) {System.out.println("1/1");} else System.out.println(fz[idx] + "/" + fm[idx]);}}
}

2018 ICPC 焦作区域赛 Resistors in Parallel(找规律+大数)相关推荐

  1. 【2018焦作-E】Resistors in Parallel(思维+大数)

    题目链接 思路: 思考一下会发现选择质因子越多的且越小的会使得结果更小,因此预处理前100的质因子,询问直接查询处理数组.需要写大数 ac代码: import java.util.Scanner; i ...

  2. Gym - 101981G The 2018 ICPC Asia Nanjing Regional Contest G.Pyramid 找规律

    数一个n阶三角形中,有多少个全等三角形,n<=1e9 拿到题想找规律,手画开始一直数漏....,最后还是打了个表 (打表就是随便定个点为(0,0),然后(2,0),(4,0),(6,0),(1, ...

  3. 2018 ACM-ICPC亚洲区域赛 北京赛区

    2018 ACM-ICPC亚洲区域赛 北京赛区 A - Jin Yong's Wukong Ranking List HihoCoder - 1870 题意 给N对关系,每对关系表示为A 比B 厉害, ...

  4. icpc西部区域赛_ICPC西部区域赛捷报传来!

    ICPC西部区域赛(新疆赛区)圆满结束软件学子斩获佳绩 2020年10月31日,由新疆大学信息科学与工程学院(网络空间安全学院)承办的ICPC国际大学生程序设计竞赛2020年西部区域赛(新疆赛区)圆满 ...

  5. 2020年 ICPC 亚洲区域赛(上海)G-Fibonacci

    ICPC 亚洲区域赛(上海) G-Fibonacci 题目 斐波那契数列为1,1,2,3,5,8,13,21,- 可以看到,这个数列有以下特点: 奇,奇,偶,奇,奇,偶- 当 xxx 与 yyy 相乘 ...

  6. 2018焦作ICPC E - Resistors in Parallel(规律+Java大数)

    2018焦作ICPC E - Resistors in Parallel题目链接 Time limit  2000 ms Memory limit  1048576 kB In this physic ...

  7. Resistors in Parallel(Gym - 102028E 2018 ICPC 焦作E题 大数+规律C++版)

    链接:传送门 题外话:这套题作为队内训练赛,然后找规律找炸了,后来补题,发现大家都在用java或者python写,太难了,不会啊,只会C++的萌新躲在墙角瑟瑟发抖,写下了这个C++版本的解题报告 题意 ...

  8. 2018年 ACM/ICPC亚洲区域赛 青岛赛区现场赛 比赛总结

    首先祝贺自己收获了ACM生涯中的第二枚铜牌. 首先吐槽一下中石油: 周六早上来到中国石油大学,连个志愿者小姐姐都没看到.(但是看到了女装大佬).报完到之后发现教练少了一张午餐券(要不要这么粗心).为了 ...

  9. 第43届ACM icpc亚洲区域赛焦作站感想

    青岛痛失银牌,焦作又是铜牌一枚,现在想想,前面三个水题,我的原因太大了,老是犯各种zz小错误,明明能秒,却花了大量时间debug,导致三个小时才签完到,最后一个小时,F题的bfs没出来,B题也没出来, ...

最新文章

  1. 物联网激荡MEMS传感器浪潮
  2. 微型计算机期末考试a卷,(208) 北京理工大学
  3. Mysql高性能优化规范建议,太厉害了!
  4. Openssl 生成证书server.key and server.crt
  5. centos上使用高版本gcc、g++
  6. Sharepoin学习笔记—架构系列—Sharepoint服务(Services)与服务应用程序框架(Service Application Framework) 1
  7. [学习笔记]C语言深度剖析
  8. EMNLP'21 | 基于稀疏子网络的领域迁移
  9. broker druid 查询_即时查询工具| Druid
  10. MVC中关于JSON的处理
  11. xp安全模式下如何修复计算机,xp安全模式下怎么解决蓝屏_xp开机进入安全模式修复蓝屏教程...
  12. 震网三代在metasploit-framework上的复现与利用
  13. 数据分析-用python分析中国五大城市的PM2.5值(ols建立回归模型)
  14. andriod中3g模块没有mac地址的原因
  15. Android音乐浮窗播放器
  16. TrustSystem声学测试指导
  17. 联想小新 Air 13 (Pro) 6,7代笔记本安装Win7系统
  18. 计算机远程安装win7,初试使用Ghost工具远程安装win7操作系统
  19. 前端架构 101(六):整洁(Clean Architecture)架构是归宿
  20. ATMEGA88PA-AU(工作原理图)

热门文章

  1. 金融业务知识(2):股票交易的基本流程
  2. Linux——Makefile文件
  3. JSRUN 对比 jsfiddle,jsbin,codepen
  4. 《软技能》读书笔记(上)
  5. 服务器安装内置无线网卡,笔记本怎么安装内置网卡 笔记本内置无线网卡安装步骤【图文】...
  6. IDEA中对Git的常规操作(合并,提交,新建分支,更新)
  7. jarvisoj_level0
  8. 跨平台手动迁移虚拟机
  9. 电力系统仿真软件python_PySpice: 使用ngspice进行电路仿真分析-1:安装
  10. 在 dart fluter 中使用 typedef