首页 > 其他分享 >cf1864C. Divisor Chain

cf1864C. Divisor Chain

时间:2023-11-17 23:34:36浏览次数:38  
标签:cf1864C Divisor puts Chain include define

https://codeforces.com/contest/1864/problem/C

思维越来越僵化了
假如\(n=2^k\),直接每次/2就行。
否则,我们可以考虑如何转化成上面的情况
令\(n=2^k x\),那么我们显然可以转移到\(n=2^k (x-1)\),因为x是奇数,所以2的次幂会加一,最后变成\(2^k\)次方的时候,每个数最多出现两次,正好符合题意。

#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
#include<map>
#include<vector>
#include<set>
#include<queue>
#include<ctime>
#define A puts("YES")
#define B puts("NO")
//#define A puts("Yes")
//#define B puts("No")
#define fo(i,a,b) for (ll (i)=(a);(i)<=(b);(i)++)
#define fd(i,b,a) for (int (i)=(b);(i)>=(a);(i)--)
#define mk(x,y) make_pair((x),(y))
#define lc (o<<1)
#define rc (o<<1|1)
using namespace std;
//typedef __int128 i128;
typedef double db;
typedef long long ll;
const ll mo=998244353;
const ll inf=1ll<<60;
const int N=1e5+5;
int p[N],tot,ans,b[N],now;
bool vis[N];
int n;
void work(int n){
	int cnt=0;
	int m=n;
	while (n%2==0) {
		n/=2;
		cnt++;
	}
	
	if (n==1) {
		fd(i,cnt,0) b[++ans]=1<<i;
		return; 
	}
	
	b[++ans]=m;
	work((m/(1<<cnt)-1) *(1<<cnt));
}
int main()
{
//	freopen("data.in","r",stdin);
//	freopen("ans.out","w",stdout);
		
	int T;
	scanf("%d",&T);
	while (T--){
		scanf("%d",&n);
		ans=0;
		work(n);
		
		printf("%d\n",ans);
		fo(i,1,ans) printf("%d ",b[i]);
		printf("\n");
	}

	return 0;
} 

  

标签:cf1864C,Divisor,puts,Chain,include,define
From: https://www.cnblogs.com/ganking/p/17839905.html

相关文章

  • 文章《Semantic Kernel -- LangChain 的替代品?》的错误和疑问 探讨
    微信公众号文章SemanticKernel——LangChain的替代品?[1],它使用的示例代码是Python,他却发了这么一个疑问:支持的语言对比(因为SemanticKernel是用C#开发的,所以它对C#比较支持)如上所示。不清楚SemanticKernel为什么要用C#来开发,C#相比Python和JavaScript来说使用......
  • JS中的作用域Scope、范围链Scope Chain以及范围链和调用栈的区别
    作用域Scope范围链ScopeChain 范围链和调用栈的区别关键点:范围链与调用顺序无关始终从定义分析:只含本范围与父范围所能访问的变量 ......
  • Win11 部署 Langchain-Chatchat
    LangChain-Chatchat(原Langchain-ChatGLM)基于ChatGLM等大语言模型与Langchain等应用框架实现,开源、可离线部署的检索增强生成(RAG)大模型知识库项目。项目地址:https://github.com/chatchat-space/Langchain-Chatchat部署还是比较简单的,照着文档一步一步来就行先看下python......
  • docker异常unable to add return rule in DOCKER-ISOLATION-STAGE-1 chain
    docker重装启动异常 INFO[2021-03-09T15:06:20.839195000+08:00]Loadingcontainers:start.INFO[2021-03-09T15:06:20.885624800+08:00]stoppingeventstreamfollowinggracefulshutdownerror="<nil>"module=libcontainerdnamespace=mobyINFO[2021-......
  • netsh、ssf、proxychains、netsh端口转发
    端口转发1本地端口转发(正向代理)实验kali:192.168.9.16ubuntu:192.168.9.15ubuntu2:192.168.9.10首先就是主机安装ssh工具,用ssh做端口转发kali开启ssh服务,需要下载openssh-serverapt-getinstallopenssh-server然后开启ssh服务servicesshstart然后配置可使用密......
  • Neo4j+Langchain实现非结构化知识图谱增强QA
    微信公众号的一篇文章,着重介绍如何使用知识图谱来增强大语言模型QA的问答效果1.核心架构核心架构如下:可以通过Neo4j的向量索引和Neoconj图数据的强大能力来实现检索增强的生成系统,提供精确且上下文丰富的答案。两条路:向量相似性搜索来检索非结构化信息,访问图数据库来提取......
  • Langchain-Chatchat项目:5.1-ChatGLM3-6B工具调用
      在语义、数学、推理、代码、知识等不同角度的数据集上测评显示,ChatGLM3-6B-Base具有在10B以下的基础模型中最强的性能。ChatGLM3-6B采用了全新设计的Prompt格式,除正常的多轮对话外。同时原生支持工具调用(FunctionCall)、代码执行(CodeInterpreter)和Agent任务等复杂场景。本文......
  • LangChain=>RecursiveCharacterTextSplitter
     .Net版本LangChain源码:github.comRecursiveCharacterTextSplitter调用方法:varstate_of_the_union_txt="text-Content";vartextSplitter=newRecursiveCharacterTextSplitter(chunkSize:300,chunkOverlap:30);vartexts=textSplitter.CreateDocuments(n......
  • Langchain-Chatchat项目:4.2-P-Tuning v2使用的数据集
      本文主要介绍P-tuning-v2论文中的5种任务,分别为Glue任务、NER任务、QA任务、SRL任务、SuperGlue任务,重点介绍了下每种任务使用的数据集。一.Glue任务  GLUE(GeneralLanguageUnderstandingEvaluation)是纽约大学、华盛顿大学等机构创建了一个多任务的自然语言理解基准和分......
  • Arm GNU Toolchain Downloads
    ArmGNUToolchainDownloadsArmGNUToolchainDownloadshttps://developer.arm.com/downloads/-/arm-gnu-toolchain-downloads......