链接:传送门

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

题意:说有n(10^100)个电阻器并联,选一个无平方因子的数,他的阻值是所有因子的倒数和的倒数,求这n个电阻值的最小电阻

思路:找规律

首先作为最小的值分别是

2 6 30 210 2310......

这些数怎么来的呢

2 3 5 7 11......求前缀积即可

也就是说我们在前缀积中找一个最大的小于等于n的数即可

那么如何求它的阻值

1         1/1
2-5       2/3
6-29      6/12
30-209    30/72
210-2309  210/576

你会发现分子就是刚刚的前缀积,分母则是对应的质数+1的前缀积

所以我们预处理两个数组,一个分子up[i]=up[i-1]*prime[i];一个分母down[i]=down[i-1]*(prime[i]+1);

由于n是100为,当前缀积求到60的时候,up[60].size()>100,即可结束

以up数组为索引,去找到对应最小阻值的下标,取gcd即可

这里的gcd不使用辗转相除法,由于只有60个质因子,我们每次去取余这些质因子,如果是公约数,将其约掉即可

这题C语言使用到的大数模板有:大数与整数相乘,大数除整数,大数取模整数

AC代码如下:

#include<bits/stdc++.h>
using namespace std;
#define ll long long bool flag[1005];//标记数组
int Ans_p[1005],tot;//素数表,总素数个数,注意(Ans_p[tot])内有素数void eulgp(int n)//2~n 内的素数
{tot=0;                         //初始化memset(flag,-1,sizeof(flag));for(int i=2;i<=n;++i){if(flag[i]) Ans_p[++tot]=i;         //存入素数for(int j=1;(j<=tot)&&(i*Ans_p[j]<=n);++j){flag[i*Ans_p[j]]=0;if(i%Ans_p[j]==0)       //避免重复赋0及时跳出break;}}
}string div(string a,int b)
{string c;int len=a.length(),ans=0;char s;for(int i=0; i<len; i++){ans=ans*10+a[i]-'0';s=ans/b+'0';ans%=b;c+=s;}int pos=0;while(pos<len && c[pos]=='0') pos++;if(pos==len) return "0";return c.substr(pos);
}string mul(string a,int b)
{string c;char s;int len=a.length(),ok=0;for(int i=len-1; i>=0; i--){int temp=(a[i]-'0')*b+ok;ok=temp/10;s=temp%10+'0';c=s+c;}while(ok){s=ok%10+'0';c=s+c;ok/=10;}return c;
}int MOD(string str,int mod)
{int rem=0;for(int i=0; i<str.length(); i++){rem=rem*10+str[i]-'0';rem=rem%mod;}return rem;
}string up[65],down[65];int main()
{eulgp(1000);up[0] = down[0] = "1"; for(int i=1;i<=60;i++){up[i] = mul(up[i-1],Ans_p[i]);down[i] = mul(down[i-1],Ans_p[i]+1);}int t;scanf("%d",&t);while(t--){string n;cin>>n;for(int i=1;;i++){if(up[i].size()>n.size()||(up[i].size()==n.size()&&up[i]>n)){string ansu=up[i-1],ansd=down[i-1];for(int j=1;j<=60;j++){if(!MOD(ansu,Ans_p[j])&&!MOD(ansd,Ans_p[j])) ansu=div(ansu,Ans_p[j]),ansd=div(ansd,Ans_p[j]);}cout<<ansu<<"/"<<ansd<<endl;break;}}}return 0;
}

Resistors in Parallel(Gym - 102028E 2018 ICPC 焦作E题 大数+规律C++版)相关推荐

  1. 2018 ICPC 焦作区域赛 Resistors in Parallel(找规律+大数)

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

  2. Gym 102028D Keiichi Tsuchiya the Drift King(2018 ICPC 焦作站 D 题) 计算几何

    去年暑假集训了两个月就去了焦作,这个题一直卡着到最后也没做出来,很遗憾的在人生中第一场 ICPC 比赛打了铁.当时也没有补题的习惯,这个题知道了大致做法后就放过了.今年准备银川赛区,翻出了往年的比赛真 ...

  3. 2018 icpc 焦作站 自闭记

    今年三站,秦皇岛,徐州,焦作.全部打铜,心情不是一般的失落. 可能我真的只有铜牌的水平吧. 我们5题 14个小时罚时,离银牌线还差5个小时罚时. 如果我码力再强一点,F题不出bug 这里就能少3个小时 ...

  4. 2018 ICPC焦作站 F题 Honeycomb【bfs】

    题目链接:https://codeforces.com/gym/102028/problem/F 这题就是输入处理比较恶心,先写个gets(mp[x]+1) 本地没问题,oj的编译器直接报错,真玄学, ...

  5. 2018 icpc 焦作站现场赛 E题题解

    水题没人写题解,都直接上Java代码--那我写一个. 计蒜客题面:https://nanti.jisuanke.com/t/A2203 题意:如果i是完全平方数(>=4)的倍数,那么i号电阻的阻 ...

  6. 后缀数组 ---- 2018~2019icpc焦作H题[后缀数组+st表+二分+单调栈]

    题目链接 题目大意: 给出nnn个数,定义f[l,r]f[l,r]f[l,r]表示 区间[l,r][l,r][l,r]的最大值,求所有 子区间的最大值的和,要求相同的子区间只能算一次 比如数列 5 6 ...

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

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

  8. 2018焦作ICPC E. Resistors in Parallel(打表+大数)

    E. Resistors in Parallel 题意: 图1: 图2 图3: 选择n以内的一个i,使得Si最大,S_i的值就是说i的所有因子作为下标j,对所有r_j(计算方式见图1)进行图2中的运算 ...

  9. 2018 焦作 onsite E - Resistors in Parallel(数学或规律+大数)

    题目链接:http://codeforces.com/gym/102028/problem/EE. Resistors in Parallel time limit per test 2.0 s me ...

最新文章

  1. 解决Docker容器内访问宿主机MySQL数据库服务器的问题
  2. TDD Tip:方法内部New出来的对象如何Mock
  3. 看我如何跨虚拟机实现Row Hammer攻击和权限提升
  4. 一个Linux下的 俄罗斯方块游戏,基于 ncurse 库。。
  5. Xcode没有pch文件
  6. superset数据集birth_names的负时间戳处理
  7. Python中Function(函数)和method(方法)
  8. python每天定时9点执行_python每天定时运行某程序代码
  9. python教程400集笔记,Python学习中的笔记--集合相关,python笔记--集合
  10. VC“cannot execute program”错误的解决方法
  11. python面向对象——类(下)
  12. win10桌面便签小工具下载,可固定电脑桌面的便签软件
  13. 360系统急救箱用在服务器上,360系统急救箱打开失败的处理操作
  14. 【面试总结】JNI层MediaScanner的分析,挥泪整理面经
  15. 以一元及二元函数为例,通过多项式的函数图像观察其拟合性能;以及对用多项式作目标函数进行机器学习时的一些理解。
  16. win10 3D查看器glb和3mf格式模型
  17. 异常记录---Error creating bean with name 'sqlSessionFactory'
  18. 【C语言】七段显示器输出数字
  19. Python实现自动换壁纸功能
  20. SEO和反向链接对ASO的影响

热门文章

  1. 主题建模-corpora语料库-PCA进行降维
  2. Linux 下录屏制作 GIF 图片
  3. 如何找到可靠的软件开发公司
  4. Hadoop 中的数据类型
  5. 单片机P0口的AD0-7是什么意思
  6. 将头像、文字和二维码三部分,合成一张宣传图片
  7. linux定期清理日志脚本,一周清理一次
  8. FL Studio教程之如何加载采样
  9. CRC循环冗余码及其详细计算
  10. 3GPP TS 23501-g51 中英文对照 | 4.4.6 5G LAN-type Services