分数大战
模拟两个分数相加的过程,即分母同分,分子对应变化然后相加,再分子分母约分即可,因此就需要求最大公因数和最小公倍数了
#include <bits/stdc++.h>
using namespace std;
int gcd(int a,int b)
{
return b==0?a:gcd(b,a%b);
}
int lcm(int a,int b)
{
return a/gcd(a,b)*b;
}
int main()
{
int a,b,c,d,e,f,t;
while(cin>>a>>b>>c>>d)
{
f=lcm(b,d);
e=a*(f/b)+c*(f/d);
t=gcd(e,f);
e=e/t,f=f/t;
cout<<e<<" "<<f<<endl;
}
return 0;
}
勇敢的心
这道题用数组存“ACM”反而麻烦,不如直接两层循环输出
#include <bits/stdc++.h>
using namespace std;
int main()
{
int m;
while(cin>>m)
{
for(int i=0;i<3*m;i++)
{
for(int j=0;j<m;j++)
{
cout<<"ACM";
}
cout<<endl;
}
}
return 0;
}
沧海明月
所谓两个数互为素数,实质上就是两个数的最大公因数是1
#include <bits/stdc++.h>
using namespace std;
int gcd(int a,int b)
{
return b==0?a:gcd(b,a%b);
}
int main()
{
int n;
while(cin>>n)
{
int count=1;
for(int i=2;i<n;i++)
{
if(gcd(i,n)==1) count++;
}
cout<<count<<endl;
}
return 0;
}