CF1497C1 k-LCM (easy version)
CF1497C2 k-LCM (hard version)

题意:

给定一个整数 n,请找到 k 个和为 n 的正整数a1,a2,....,aka_1,a_2,....,a_ka1​,a2​,....,ak​,使得lcma1,a2,....,ak<=n2lcm{a_1,a_2,....,a_k}<=\frac{n}{2}lcma1​,a2​,....,ak​<=2n​
t组数据,1<=t<=1e4,3<=n<=1e9,3<=k<=n1<=t<=1e4,3<=n<=1e9,3<=k<=n1<=t<=1e4,3<=n<=1e9,3<=k<=n
保证所有t组数据中∑k<=1e5保证所有t组数据中\sum k<=1e5保证所有t组数据中∑k<=1e5
在简单版中k=3,困难版中k∈[3,n]

题解:

本题是构造题,也是规律题,不过我属实没看出来
我们先考虑当k=3时的情况,
当n为奇数时,令这三个数的最小公倍数为⌊n2⌋\lfloor \frac{n}{2} \rfloor⌊2n​⌋。则这三个数可以是1,⌊n2⌋\lfloor \frac{n}{2} \rfloor⌊2n​⌋,⌊n2⌋\lfloor \frac{n}{2} \rfloor⌊2n​⌋。和为n,其最小公倍数<=⌊n2⌋\lfloor \frac{n}{2} \rfloor⌊2n​⌋

当n为偶数且n mod 4!=0时,我们令三个数的最小公倍数为⌊n2⌋\lfloor \frac{n}{2} \rfloor⌊2n​⌋,则三个数分别是2,⌊n2⌋\lfloor \frac{n}{2} \rfloor⌊2n​⌋-1,⌊n2⌋\lfloor \frac{n}{2} \rfloor⌊2n​⌋-1

当n为4的倍数时,我们令最小公倍数为⌊n2⌋\lfloor \frac{n}{2} \rfloor⌊2n​⌋,则三个数为⌊n2⌋\lfloor \frac{n}{2} \rfloor⌊2n​⌋,⌊n4⌋\lfloor \frac{n}{4} \rfloor⌊4n​⌋,⌊n4⌋\lfloor \frac{n}{4} \rfloor⌊4n​⌋
这个三种情况包含了所有的n,且满足和为n,最小公倍数正好为⌊n2⌋\lfloor \frac{n}{2} \rfloor⌊2n​⌋
其实仔细观察会发现,样例所给的三个数据,正好对应了三个情况

现在考虑k>3的情况,1不会影响最小公倍数的情况,所以我们可以先输出k-3个1,这样不又只剩下3个数的情况了吗?和简单版一样

代码:

#include <bits/stdc++.h>
#include <unordered_map>
#define debug(a, b) printf("%s = %d\n", a, b);
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
typedef pair<int, int> PII;
clock_t startTime, endTime;
//Fe~Jozky
const ll INF_ll= 1e18;
const int INF_int= 0x3f3f3f3f;
void read(){};
template <typename _Tp, typename... _Tps> void read(_Tp& x, _Tps&... Ar)
{x= 0;char c= getchar();bool flag= 0;while (c < '0' || c > '9')flag|= (c == '-'), c= getchar();while (c >= '0' && c <= '9')x= (x << 3) + (x << 1) + (c ^ 48), c= getchar();if (flag)x= -x;read(Ar...);
}
template <typename T> inline void write(T x)
{if (x < 0) {x= ~(x - 1);putchar('-');}if (x > 9)write(x / 10);putchar(x % 10 + '0');
}
void rd_test()
{#ifdef ONLINE_JUDGE
#elsestartTime= clock();freopen("data.in", "r", stdin);
#endif
}
void Time_test()
{#ifdef ONLINE_JUDGE
#elseendTime= clock();printf("\nRun Time:%lfs\n", (double)(endTime - startTime) / CLOCKS_PER_SEC);
#endif
}
int main()
{//rd_test();int t;cin >> t;while (t--) {int n, k;cin >> n >> k;for (int i= k; i > 3; i--) {n--;cout << 1 << " ";}if (n & 1) {cout << 1 << " " << n / 2 << " " << n / 2 << endl;}else if ((n / 2) & 1) {cout << 2 << " " << n / 2 - 1 << " " << n / 2 - 1 << endl;}elsecout << n / 2 << " " << n / 4 << " " << n / 4 << endl;}//Time_test();
}

CF1497C k-LCM相关推荐

  1. 数论----gcd和lcm

    gcd即最大公约数,lcm即最小公倍数. 首先给出a×b=gcd×lcm 证明:令gcd(a,b)=k,a=xk,b=yk,则a×b=x*y*k*k,而lcm=x*y*k,所以a*b=gcd*lcm. ...

  2. ACM数论之旅3---最大公约数gcd和最小公倍数lcm(苦海无边,回头是岸( ̄∀ ̄))...

    gcd(a, b),就是求a和b的最大公约数 lcm(a, b),就是求a和b的最小公倍数 然后有个公式 a*b = gcd * lcm     ( gcd就是gcd(a, b), ( •̀∀•́ ) ...

  3. 浅析欧几里德算法 GCD和LCM

    前言 欧几里德算法作为有着非常简短的实现的算法,可能很多初学者(包括当时的我)都不求甚解.本文给出了GCD.LCM的性质,以及欧几里德算法的实现.证明和时间复杂度推导. 这里是我的个人网站: http ...

  4. 蓝桥杯历届试题——核桃的数量(LCM+GCD)

    核桃的数量 问题描述 小张是软件项目经理,他带领3个开发组.工期紧,今天都在加班呢.为鼓舞士气,小张打算给每个组发一袋核桃(据传言能补脑). 他的要求是: 各组的核桃数量必须相同 各组内必须能平分核桃 ...

  5. 2021牛客寒假算法基础集训营1 J 一群小青蛙呱蹦呱蹦呱

    今天的比赛没打( 睡午觉去了,今天太累了 晚上来看看题 2021牛客寒假算法基础集训营1 J 一群小青蛙呱蹦呱蹦呱 题目传送门 板子题( 我们知道由唯一分解定理得,若 n=p1α1×p2α2×p3α3 ...

  6. 0x34.数学 - 矩阵乘法

    目录 矩阵 luogu P3390 [模板]矩阵快速幂 AcWing 205. 斐波那契 P1939 [模板]矩阵加速(数列) AcWing 206. 石头游戏 声明: 本系列博客是<算法竞赛进 ...

  7. 置换群和Burnside引理,Polya定理

    定义简化版: 置换,就是一个1~n的排列,是一个1~n排列对1~n的映射 置换群,所有的置换的集合. 经常会遇到求本质不同的构造,如旋转不同构,翻转交换不同构等. 不动点:一个置换中,置换后和置换前没 ...

  8. ACM-ICPC 2018 沈阳赛区网络预赛 Spare Tire(容斥+公式推)

    A sequence of integer \lbrace a_n \rbrace{an​} can be expressed as: \displaystyle a_n = \left\{ \beg ...

  9. [bzoj 5332][SDOI2018]旧试题

    传送门 Description \[ \sum_{i=1}^A\sum_{j=1}^B\sum_{k=1}^Cd(ijk) (\mathrm{mod\:} 10^9+7) \] 其中 \(d(ijk) ...

  10. HDU 6607 Easy Math Problem(杜教筛 + min_25 + 拉格朗日插值)

    Easy Math Problem 推式子 ∑i=1n∑j=1ngcd(i,j)Klcm(i,j)[gcd(i,j)∈prime]∑i=1n∑j=1ngcd(i,j)K−1ij[gcd(i,j)∈pr ...

最新文章

  1. 8800个机器学习开源项目为你精选TOP30!
  2. 关于前端缓存的一个封装思路
  3. 图标适配大小_主题真的是大吃一鲸适配全EMUI
  4. PyTorch torchvision.models小结
  5. 洛谷 - P2944 [USACO09MAR]Earthquake Damage 2 G(最小割)
  6. es 全量同步mysql_使用canal将mysql同步到es中
  7. 课程设计-毕业设计-JAVA画板课程设计---总之岁月漫长,然而值得等待。
  8. “携号转网”正式试运行,这两个原因或致无法转网
  9. [WPF自定义控件库]使用WindowChrome自定义RibbonWindow
  10. Valid Palindrome LeetCode Java
  11. 高仿爱鲜蜂购物应用源码
  12. webserver技术总结之一:webserver概念
  13. EF中一种简单的多条件动态查询方法
  14. python 内存文件_python基础知识-7-内存、深浅、文件操作
  15. 学生学籍的计算机管理属于,随着计算机的飞速发展,其应用范围不断扩大,某学校学生学籍的计算机管理属于__应用领域。A.科学计...
  16. jQuery的排他思想
  17. Android基于环信SDK开发IM即时聊天(一)
  18. 老毛桃u盘重装win7教程
  19. 多可系统中如何修改注册信息
  20. 迁移学习——Transitive Transfer Learning

热门文章

  1. 因为没钱买衣服,我女朋友不要我了......
  2. 春节特惠活动┃强烈推荐!孩子的科普从这套全球畅销250万册的最酷科学书起步...
  3. 计算机标准符合,计算机专利申请要符合哪些标准
  4. linux配置ip地址 routes,CentOS 7 设置网络IP地址(示例代码)
  5. php抓取统计局区划代码,抓取国家统计局的代码和名称,爬取,区域,划分,及
  6. 服务器抽屉式维护,一种服务器用可顺序运动的滑轨
  7. java调用js查询mongo_mongodb操作之使用javaScript实现多表关联查询
  8. 服务器运维监控指标,运维体系~指标监控~Prometheus监控告警与日志
  9. python 服务端框架_GitHub - edisonlz/fastor: Python服务端开发框架-极易上手,超出你的想象!...
  10. windows server 启用 vss_windows服务器常用的安全加固方法