博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
2018焦作区域赛E. Resistors in Parallel
阅读量:6819 次
发布时间:2019-06-26

本文共 4281 字,大约阅读时间需要 14 分钟。

原题链接:

解法:

打表找规律

可知分子1 2 6 30 210......
发现后一个等于前一个乘以2,3,5,7......
还可以发现分母1 3 12 72 576.。。。
发现后一个等于前一个乘以3,4,6,8......(也就是分子对应的质数加1)
那么接下来就是大数问题了
Java代码如下:(真的简短粗暴啊!)

1 //package 实验; 2 import java.math.BigInteger; 3 import java.util.Scanner; 4 import java.util.*; 5 import java.io.*; 6 import java.math.*; 7 public class Main { 8     static int[] p=new int[5050]; 9     static int[] p1=new int[5050];10     static int[] vis=new int[5050];11     static int cnt=0;12     public static void init() {13         for(int i=2;i<=5000;i++) {14             if(vis[i]==1)continue;15             p[++cnt]=i;16             p1[cnt]=i+1;17             for(int j=i;j<=5000;j+=i) {18                 vis[j]=1;19             }20         }21     }22     public static void main(String [] args){23         init();24         int T;25         Scanner sc=new Scanner(System.in);26         T=sc.nextInt();27         while(true) {28             BigInteger n=sc.nextBigInteger();29             BigInteger x=BigInteger.valueOf(1);30             BigInteger x1=BigInteger.valueOf(1);31             BigInteger y=BigInteger.valueOf(1);32             BigInteger y1=BigInteger.valueOf(1);33             BigInteger z=BigInteger.valueOf(1);34             for(int i=1;i<=cnt;i++) {35                 //System.out.println(x);36                 y=x;37                 y1=x1;38                 x=x.multiply(BigInteger.valueOf(p[i]));39                 x1=x1.multiply(BigInteger.valueOf(p1[i]));40                 if(n.compareTo(x)==-1)break;41             }42             z=y.gcd(y1);43             y=y.divide(z);44             y1=y1.divide(z);45             System.out.println(y+"/"+y1);46             T--;47             if(T<=0)break;48         }49         sc.close();50     }51 }

C++代码:(这个有点迷,计算客可以过,cf交上去过不了,慎用)

1 #include
2 using namespace std; 3 typedef long long ll; 4 const int L=5010; 5 string add(string a,string b) 6 { 7 string ans; 8 int na[L]={
0},nb[L]={
0}; 9 int la=a.size(),lb=b.size(); 10 for(int i=0;i
lb?la:lb; 13 for(int i=0;i
=0;i--) ans+=na[i]+'0'; 16 return ans; 17 } 18 string mul(string a,string b) 19 { 20 string s; 21 int na[L],nb[L],nc[L],La=a.size(),Lb=b.size();//na存储被乘数,nb存储乘数,nc存储积 22 fill(na,na+L,0);fill(nb,nb+L,0);fill(nc,nc+L,0);//将na,nb,nc都置为0 23 for(int i=La-1;i>=0;i--) na[La-i]=a[i]-'0';//将字符串表示的大整形数转成i整形数组表示的大整形数 24 for(int i=Lb-1;i>=0;i--) nb[Lb-i]=b[i]-'0'; 25 for(int i=1;i<=La;i++) 26 for(int j=1;j<=Lb;j++) 27 nc[i+j-1]+=na[i]*nb[j];//a的第i位乘以b的第j位为积的第i+j-1位(先不考虑进位) 28 for(int i=1;i<=La+Lb;i++) 29 nc[i+1]+=nc[i]/10,nc[i]%=10;//统一处理进位 30 if(nc[La+Lb]) s+=nc[La+Lb]+'0';//判断第i+j位上的数字是不是0 31 for(int i=La+Lb-1;i>=1;i--) 32 s+=nc[i]+'0';//将整形数组转成字符串 33 return s; 34 } 35 int sub(int *a,int *b,int La,int Lb) 36 { 37 if(La
=0;i--) 41 if(a[i]>b[i]) break; 42 else if(a[i]
=0;i--) 51 if(a[i]) return i+1;//返回差的位数 52 return 0;//返回差的位数 53 54 } 55 string div(string n1,string n2,int nn)//n1,n2是字符串表示的被除数,除数,nn是选择返回商还是余数 56 { 57 string s,v;//s存商,v存余数 58 int a[L],b[L],r[L],La=n1.size(),Lb=n2.size(),i,tp=La;//a,b是整形数组表示被除数,除数,tp保存被除数的长度 59 fill(a,a+L,0);fill(b,b+L,0);fill(r,r+L,0);//数组元素都置为0 60 for(i=La-1;i>=0;i--) a[La-1-i]=n1[i]-'0'; 61 for(i=Lb-1;i>=0;i--) b[Lb-1-i]=n2[i]-'0'; 62 if(La
=0;i--)//将除数扩大10^t倍 67 if(i>=t) b[i]=b[i-t]; 68 else b[i]=0; 69 Lb=La; 70 for(int j=0;j<=t;j++) 71 { 72 int temp; 73 while((temp=sub(a,b+j,La,Lb-j))>=0)//如果被除数比除数大继续减 74 { 75 La=temp; 76 r[t-j]++; 77 } 78 } 79 for(i=0;i
=0) s+=r[i--]+'0'; 82 //cout<
<
85 while(i>=0) v+=a[i--]+'0'; 86 if(v.empty()) v="0"; 87 //cout<
<
0){123 h[c++]=k%10+'0';124 k/=10;125 }126 h[c]='\0';127 for(int i=0;i
y.length())return 1;133 else if(x.length()
y[i])return 1;137 if(x[i]
>T;169 while(T--){170 cin>>s;171 if(s=="1"){172 printf("1/1\n");173 continue;174 }175 int id=0;176 for(int i=1;i<=100;i++){177 if(!ok(s,m[i])){178 id=i-1;179 break;180 }181 }182 string z=gcd(m[id],m1[id]);183 string x=div(m[id],z,1);184 string y=div(m1[id],z,1);185 cout<
<<"/"<
<

 

转载于:https://www.cnblogs.com/ccsu-kid/p/10101228.html

你可能感兴趣的文章
Qt连接Oracle数据库常见问题
查看>>
45个实用的JavaScript技巧、窍门和最佳实践
查看>>
sqlserver 2005 列字符串拼接
查看>>
用面向接口编程思想看找对象
查看>>
TWaver GIS在电信中的使用
查看>>
5 Servlet
查看>>
百度创始人李彦宏:要做最好的中文搜索引擎
查看>>
JavaScript强化教程-cookie对象
查看>>
MEMCACHE常用的命令
查看>>
docker 基础
查看>>
使用Freeline提高你的工作效率
查看>>
TCP协议与UDP协议的区别
查看>>
sql convert and cast
查看>>
SQL优化小技巧
查看>>
UVALive 4850 Installations 贪心
查看>>
JS 中刷新页面的方法
查看>>
励志帝马云是不是你的财富导师?
查看>>
力扣算法题—088合并两个有序数组
查看>>
APP和web设计区别
查看>>
三层fragment嵌套,接口回调方式
查看>>