• 2024-03-27CF1864C的题解
    (一)可以将\(x\)转为二进制。考虑一个数的二进制\((1\dots10\dots0)\)。其中,第一个省略号中有什么不确定,第二个省略号里都是\(0\)。易得,每个数都可以看成这种形式。那么可以每次去掉最后一位的\(1\),易证减去的数是原数的因数。最后会得到形如\((10\dots0)\),省略号中全是
  • 2024-02-27CF1864C 题解
    \(x=2^k\)是好做的,每次以\(2^{k-1}\)为因数即可。对于其他情况,考虑每次让\(x\)减去其二进制下最低位的\(1\)直至变成\(2^k\)。这种策略下显然每个数只会在以上两个大步骤下取到,故每个数使用不超过\(2\)次。同时操作次数在\(O(\logn)\)这个量级。#include<bits/
  • 2023-11-17cf1864C. Divisor Chain
    https://codeforces.com/contest/1864/problem/C思维越来越僵化了假如\(n=2^k\),直接每次/2就行。否则,我们可以考虑如何转化成上面的情况令\(n=2^kx\),那么我们显然可以转移到\(n=2^k(x-1)\),因为x是奇数,所以2的次幂会加一,最后变成\(2^k\)次方的时候,每个数最多出现两次,正好符合
  • 2023-08-29CF1864C Divisor Chain
    思路刚拿到题,想了一些方法但都被推翻了,在这里列举出来,并给出反例:每次减去最小的因数,反例:\(1024\)等形如\(a^k\)的数,每次都会减去\(a\)导致\(a\)的出现次数超过\(2\)次。每次减去大于等于\(\sqrtx\)的因子,\(x\)为目前的数,并特判指数的情况,反例:\(35\)等由两个
  • 2023-08-27CF1864C
    记录一道昨天卡住的题问题链接给你一个整数\(n\),你可以进行最多\(1000\)次操作,使得\(n\)减去它的一个因数,要求每种减数至多出现两次我们考虑先把\(n\)进行质因数分解,得到质因数序列\(P\)\(\{p_1,p_2,...,p_m\}\)我们从中取出一个最大的质因数\(x\),然后让\(n\)减去\(\frac