传送门


题目大意

给出电阻的并联公式,规定一个含有平方因子的数的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. sql中union 和 union all的区别
  2. bugfree-工具
  3. 项目案例分享二:密码策略与上次交互式登录
  4. 对话推荐系统_RSPapers | 对话推荐系统论文合集
  5. MySQL repeat复制函数示例
  6. Impala手动安装
  7. 控制台打印列未定义错误
  8. linux下c语言利用iconv函数实现utf-8转unicode
  9. 使用一个程序同时启动多个程序(c#)
  10. 2021年中国无线通信模组企业排名
  11. 如何自学C语言(一个菜鸟的学习路)
  12. 正圆锥体空间方程_计算机基础算法(一)——时间与空间复杂度
  13. 游戏娱乐型型计算机装机配置单,组装配置单-急求 I5 性能最好的 电脑配置的 各种大型游戏能完美流畅的玩 价钱 和配置什么的 求详细...
  14. ROS学习笔记之——amcl源码的解读
  15. Windows快捷键小记
  16. 【乐逍遥网站设计】2022年网站设计与UI元素的趋势
  17. 学习OpenCV3:MinGW编译OpenCV到vs_version.rc.obj处出错
  18. 哈工大软件构造lab3
  19. iOS 第三方登录之 新浪微博登录
  20. Linux生产者消费者模型

热门文章

  1. JDBC-API详解-Statement接口
  2. 宏观经济数据今日公布●金融改革新政近期出台
  3. Linux——Makefile文件
  4. 前端生成gif动态图下载
  5. IDEA javadoc快捷键
  6. Regression 2
  7. OS X EI Captan 中Rootless
  8. svn客户端在服务器创建项目,win7下安装svn服务器端及客户端详细步骤
  9. Mybatis学习笔记_5、Mybatis动态SQL
  10. 更改app图标和名称