题目描述
有一根粗细均匀长度为 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;
}