题目描述
有一根粗细均匀长度为
L
的木棍,先用红颜色刻度线将它
m
等分,再用蓝色刻度线将 其 n
等分(
m>n
),然后按所有刻度线将该木棍锯成小段,计算并输出长度最长的木棍的长度和根数。
输入格式
文件中仅有一行,包含三个正整数
L
,
m
和
n
,两两之间用一个空格分隔。
输出格式
文件包含两个正整数
a
和
k
,分别表示最长木棍的长度和根数。(为了简化题目的难度, 所有的测试数据中 m
和
n
一定是
L
的约数)。两数间用一个空格分隔。
样例输入
12 6 4
样例输出
2 4
提示
参考代码
#include <bits/stdc++.h>
#define ll long long
using namespace std;
int a[100005], hs[100005];
bool vis[100005] = {false};
int main()
{
int t = 0, l, n, m, nt, mt;
cin>>l>>n>>m;
do
{
t += l / n;
vis[t] = true;
} while(t <= l);
t = 0;
do
{
t += l / m;
vis[t] = true;
} while(t <= l);
int max_cnt = 0, cnt = 0;
for(int i = 1; i <= l; i++)
{
if(!vis[i])
cnt++;
else
{
cnt++;
hs[cnt]++;
cnt = 0;
}
}
for(int i = 100005; i >= 1; i--)
{
if(hs[i] > 0)
{
cout<<i<<" "<<hs[i];
return 0;
}
}
return 0;
}