Problem A 分数加法
题目描述
求2-a + 2-b,其中a和b均为正整数,结果请用最简分数表示。
输入格式
第一行为测试数据的组数T(1<=T<=400)。请注意,任意两组测试数据之间是相互独立的。
每组测试数据一行,包含两个整数a和b(2<=a,b<=20)。
输出格式
对于每组测试数据,在一行内输出结果,分子和分母用“/”隔开。
输入样例
2
2 4
3 2
123
输出样例
5/16
3/8
思路
注意化成最简就好了,水题,但是我没有一次AC
代码
#include<stdio.h>
#include<bits/stdc++.h>
using namespace std;
int findGys(int a,int b){
int result=1;
for(int i=1;i<=min(a,b);i++){
if(a%i==0 && b%i==0){
result=i;
}
}
return result;
}
int main(){
int T;
scanf("%d",&T);
while(T--){
int a,b;
scanf("%d%d",&a,&b);
int s=abs(b-a);
int fz=1+(int)pow(2,s);
int fm=(int)pow(2,max(a,b));
int gys=findGys(fz,fm);
fz=fz/gys;fm=fm/gys;
printf("%d/%d\n",fz,fm);
}
}
积累知识
找寻两个数的最大公约数
int findGys(int a,int b){ //找两个数的公约数
int result=1;
for(int i=1;i<=min(a,b);i++){
if(a%i==0 && b%i==0){
result=i;
}
}
return result;
}
oj提交地址
http://10.105.242.80/problem/p/266/