7-1 Welcome to You! (5 分)
本题要求编写程序,输出一个短句“Welcome to You!”。
输入格式:
本题目没有输入。
输出格式:
在一行中输出短句“Welcome to You!”。
#include <iostream>
using namespace std;
int main()
{
cout << "Welcome to You!" << endl;
return 0;
}
7-2 约分最简分式 (15 分)
分数可以表示为分子/分母
的形式。编写一个程序,要求用户输入一个分数,然后将其约分为最简分式。最简分式是指分子和分母不具有可以约分的成分了。如6/12可以被约分为1/2。当分子大于分母时,不需要表达为整数又分数的形式,即11/8还是11/8;而当分子分母相等时,仍然表达为1/1的分数形式。
输入格式:
输入在一行中给出一个分数,分子和分母中间以斜杠/
分隔,如:12/34
表示34分之12。分子和分母都是正整数(不包含0,如果不清楚正整数的定义的话)。
提示:在scanf
的格式字符串中加入/
,让scanf
来处理这个斜杠。
输出格式:
在一行中输出这个分数对应的最简分式,格式与输入的相同,即采用分子/分母
的形式表示分数。如 5/6
表示6分之5。
输入样例:
66/120
输出样例:
11/20
#include <iostream>
#include <bits/stdc++.h>
using namespace std;
int main()
{
int a,b,d;
while(~scanf("%d/%d",&a,&b))
{
d=__gcd(a,b);
a/=d;
b/=d;
printf("%d/%d\n",a,b);
}
return 0;
}
7-3 素因子分解 (20 分)
给定某个正整数 N,求其素因子分解结果,即给出其因式分解表达式 N=p1k1⋅p2k2⋯pmkm。
输入格式:
输入long int范围内的正整数 N。
输出格式:
按给定格式输出N的素因式分解表达式,即 N=p1^k1*p2^k2*…*pm^km
,其中pi
为素因子并要求由小到大输出,指数ki
为pi
的个数;当ki
为1即因子pi
只有一个时不输出ki
。
输入样例:
1323
输出样例:
1323=3^3*7^2
#include <iostream>
#include <bits/stdc++.h>
#define LL long long
using namespace std;
const int N=1e6+10;
int prime[N];
bool flag[N];
int pos;
int A[N];
bool judge(LL x)
{
LL ans=sqrt(x);
for(int i=2;i<=ans;i++)
{
if(x%i==0)
return 0;
}
return 1;
}
void getprime()
{
pos=0;
memset(flag,0,sizeof(flag));
for(int i=2; i<N; i++)
{
if(!flag[i])
{
prime[pos++]=i;
}
for(int j=0; i*prime[j]<N&&j<pos; j++)
{
flag[i*prime[j]]=1;
if(i%prime[j]==0)
{
break;
}
}
}
}
int main()
{
LL a,ans;
int i;
getprime();
while(cin>>a)
{
ans=a;
if(judge(a))
{
printf("%lld=%lld