http://codeforces.com/gym/102028/problem/E

定义n种电阻,阻值r[i]={ inf | i%d2==0 && d>1 ,   i | else}

然后定义n种电阻集合,S[i]={ j | i%j==0} , 现在询问给定n找出一个集合Si,使得将Si内的电阻并联之后电阻值最小,输出最简分数格式。

  考虑将一个数质因数分解后 x=p1a1p2a2...pnan,由于题目中i%d^2==0时电阻是无穷大,1/ri 就是零了不必再考虑,也就是说只用考虑x的不同因子的数量和大小即可,当大小尽可能的小,数量尽可能的多时答案就尽量的大。我们就想办法构造一个不大于n的形如 2*3*5*....*pmax的数,那么答案就是∏(1+1/pi)。由于n的范围很大而我java已经忘光,手写了个大数水过。

  

  1 #include<iostream>
  2 #include<cstdio>
  3 #include<cstring>
  4 #include<map>
  5 #include<set>
  6 #include<stack>
  7 #include<deque>
  8 #include<bitset>
  9 #include<unordered_map>
 10 #include<unordered_set>
 11 #include<queue>
 12 #include<cstdlib>
 13 #include<ctype.h>
 14 #include<ctime>
 15 #include<functional>
 16 #include<algorithm>
 17 #include<bits/stdc++.h>
 18 using namespace std;
 19 #define LL long long
 20 #define pii pair<int,int>
 21 #define mp make_pair
 22 #define pb push_back
 23 #define fi first
 24 #define se second
 25 #define inf 0x3f3f3f3f
 26 #define debug puts("debug")
 27 #define mid ((L+R)>>1)
 28 #define lc (id<<1)
 29 #define rc (id<<1|1)
 30 const int maxn=10010;
 31 const int maxm=50050;
 32 const double PI=acos(-1.0);
 33 const double eps=1e-6;
 34 const LL mod=1e9+7;
 35 LL gcd(LL a,LL b){return b==0?a:gcd(b,a%b);}
 36 LL lcm(LL a,LL b){return a/gcd(a,b)*b;}
 37 LL qpow(LL a,LL b,LL c){LL r=1; for(;b;b>>=1,a=a*a%c)if(b&1)r=r*a%c;return r;}
 38 struct Edge{int v,w,next;};
 39
 40 template<class T>
 41 ostream & operator<<(ostream &out,vector<T>&v){
 42     for(auto x:v)cout<<x<<' ';
 43     return out;
 44 }
 45 void read(LL &n){
 46     n=0; char c=getchar();
 47     while(c<'0'||c>'9')c=getchar();
 48     while(c>='0'&&c<='9') n=(n<<3)+(n<<1)+(c-'0'),c=getchar();
 49 }
 50
 51
 52 const int MAX=270;
 53 vector<int>prime;
 54 bool is[10010];
 55 void init(){
 56     is[0]=is[1]=1;
 57     for(int i=2;i<=MAX;++i){
 58         if(!is[i])prime.pb(i);
 59         for(auto v:prime){
 60             if(i*v>MAX)break;
 61             is[i*v]=1;
 62             if(i%v==0)break;
 63         }
 64     }
 65 }
 66 struct Bign{
 67     int a[121];
 68     Bign(){memset(a,0,sizeof(a));}
 69     Bign(char *s){
 70         memset(a,0,sizeof(a));
 71     a[0]=strlen(s);
 72     for(int i=0;i<a[0];i++)a[a[0]-i]=s[i]-'0';
 73     }
 74     Bign &operator *(int x){
 75         for(int i=1;i<=a[0];++i)a[i]*=x;
 76         for(int i=1;i<=a[0];++i){
 77             if(a[i]>9){
 78             a[i+1]+=a[i]/10,a[i]%=10;
 79             if(a[a[0]+1]) a[0]++;
 80             }
 81         }
 82         return *this;
 83     }
 84     bool operator>(Bign &A){
 85         if(a[0]!=A.a[0]) return a[0]>A.a[0];
 86         for(int i=a[0];i>=1;--i){
 87             if(a[i]>A.a[i])return 1;
 88             else if(a[i]<A.a[i]) return 0;
 89         }
 90         return 0;
 91     }
 92 }AA;
 93 ostream &operator<<(ostream &out,Bign &A){
 94     for(int i=A.a[0];i>=1;--i)out<<A.a[i];
 95     return out;
 96 }
 97 void AC(){
 98
 99     char str[111],one[100]="1";
100     scanf("%s",str);
101     Bign A(str);
102     Bign B(one);
103     int n;
104     for(n=0;n<prime.size();++n){
105         //cout<<prime[n]<<' '<<B<<' '<<A<<' '<<(B>A)<<endl;
106         B=B*prime[n];
107         //cout<<"n="<<n<<endl;
108         if(B>A)break;
109     }
110     vector<LL>fz,fm;
111     fz.pb(1),fm.pb(1);
112     for(int i=0;i<n;++i){
113         //LL fz1=1+prime[i],fm1=prime[i];
114         //fz*=fz1,fm*=fm1;
115         fz.pb(1+prime[i]);
116         fm.pb(prime[i]);
117     }
118     for(int i=0;i<fz.size();++i){
119         for(int j=0;j<fm.size();++j){
120             LL gg=gcd(fz[i],fm[j]);
121             fz[i]/=gg,fm[j]/=gg;
122         }
123     }
124     Bign FZ(one),FM(one);
125     for(auto v:fz)FZ=FZ*v;
126     for(auto v:fm)FM=FM*v;
127     cout<<FM<<"/"<<FZ<<endl;
128     //printf("%lld/%lld\n",fm,fz);
129 }
130 int main(){init();
131     int T;
132     cin>>T;
133     while(T--)AC();
134     return 0;
135 }

转载于:https://www.cnblogs.com/zzqc/p/10092673.html

icpc2018-焦作-E Resistors in Parallel-数论+大数相关推荐

  1. gym102028 problem E Resistors in Parallel (大数)

    链接 题意: 给出一个n,在n里面的ri如上图定义,求找出一个ri,ri的所有因子分之一的和最大.输出的是和的倒数. 思路: 看到这道题就打了下表,发现280以内的素数乘积就可以超过 10100 了, ...

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

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

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

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

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

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

  5. python笔记之1-简单读入+循环、判断+数组+函数调用+题目Resistors in Parallel(18焦作)

    ....本来博主想一心一意搞算法和C++的,但今天的大数用C++写真的...心态爆炸,然后学了一波python...多路周折终于A了这题 python的语言在有了c语言的基础上其实还挺好学的...虽然 ...

  6. 2018ACM-ICPC焦作站E题Resistors in Parallel

    Resistors in Parallel 题目: ACM-ICPC Jiaozuo Onsite 2018 题解:因为题目数据范围很大,所以猜测应该是一个区间一个固定的最小值.问题转换成了如何求某个 ...

  7. E. Resistors in Parallel

    E. Resistors in Parallel [link](Problem - E - Codeforces) 题意 给你n个电阻,如果第i个电阻可以被一个大于1的完全平方数整除,他的阻值就是无穷 ...

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

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

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

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

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

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

最新文章

  1. 定义一个DSL风格的LifecycleObserver(Kotlin)
  2. jquery .parents(), .parent() 和 closest()方法
  3. python【力扣LeetCode算法题库】面试题 08.11- 硬币
  4. 在Entity Framework中使用存储过程(一):实现存储过程的自动映射
  5. boost::container实现显式实例化平面集测试程序
  6. 边缘计算k8s集群之SuperEdge
  7. Centos(Linux)升级git最新版本
  8. bzoj1941 [Sdoi2010]Hide and Seek 线段树
  9. Python函数中单独一个星号或斜线作为形参的含义
  10. python小程序_小会计的实用Python小程序(三):人民币大写金额转换器
  11. 【人脸表情识别】基于matlab GUI稀疏表示人脸表情识别【含Matlab源码 786期】
  12. Drool的LHS和RHS
  13. MMKV_高性能MMKV数据交互分析-MMKV初始化
  14. 【AR】DroidCam笔记本调用手机摄像头(smartphone‘s camera as pc webcam)
  15. 互联网赚钱指南!我是如何零成本空手套白狼?
  16. 电信光纤猫虚拟服务器设置方法,电信光纤猫与无线路由器连接的设置方法
  17. SpringBoot+SpringBootJPA+Thymeleaf实现基本CURD+分页
  18. Linux 桌面玩家指南:02. 以最简洁的方式打造实用的 Vim 环境
  19. 罗伯特索耶的写作六法则
  20. 用iSee图片专家制作淘宝店标教程

热门文章

  1. 国家开放大学-农村社会学-形考作业3社会问题的调查报告
  2. 【软考】【知识产权与法律法规】
  3. php 鼠标经过 图片,jq实现酷炫的鼠标经过图片翻滚效果_jquery
  4. 图数据库JanusGraph介绍及使用(一):简介
  5. 分布式事务2PC论文翻译(Concurrency Control and Recovery in Database Systems )
  6. SQL Server在本地计算机上用SMSS登录不上,错误消息:(Microsoft SQL Server, Error: 18456)...
  7. Python模块学习 - openpyxl - 处理 Excel 电子表格
  8. 30行Python代码,抓取全网实时热点,获取最新资讯
  9. python版本和Matlab版本对应的关系,python调用matlab
  10. supermap 数据转为shp