清北集训Day3T1(转换)
时间:2022-05-07
本文章向大家介绍清北集训Day3T1(转换),主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
这题可能是我与正解里的最近的一次了,可以还是sb的把正解叉了。
正解其实比较显然:因为f(x)只有81个取值,所以我们可以枚举f(x),然后计算x,再判断x是否可以转化为f(x)
刚开始以为一个f(x)会对应很多x,所以这么枚举是错的。
但实际上我们在枚举f(x)的时候并不关注f(x)与x的关系,因此我们可以直接把f(x)看做与x毫不相关的变量y
这样枚举出y对应的x后再判断f(y)是否等于x,这样就一定是对的了
// luogu-judger-enable-o2
// luogu-judger-enable-o2
#include<cstdio>
#include<algorithm>
using namespace std;
const int MAXN=1e6+10;
#define getchar() (p1==p2&&(p2=(p1=buf)+fread(buf,1,1<<20,stdin),p1==p2)?EOF:*p1++)
char buf[1<<20],*p1=buf,*p2=buf;
inline int read()
{
char c=getchar();int x=0,f=1;
while(c<'0'||c>'9'){if(c=='-')f=-1;c=getchar();}
while(c>='0'&&c<='9'){x=x*10+c-'0';c=getchar();}
return x*f;
}
int ans[MAXN],tot;
int f(int a,int p)
{
int base=0,ans=1;
while(a) base+=a%10,a/=10;
for(int i=1;i<=p;i++)
ans=ans*base;
return ans;
}
int a1[50]={10,0,1,2,3,4,5,6,7,8,9};
int a2[50]={3,0,1,81};
int a3[50]={7,0,1,512,4913,5832,17576,19683};
int a4[50]={7,0,1,2401,234256,390625,614656,1679616};
int a5[50]={6,0,1,17210368,52521875,60466176,205962976};
int main()
{
int T=read();
while(T--)
{
int a=read(),b=read(),c=read(),k=read();
if(a==1&&c==0)
{
tot=0;
//f(x)^a * b + c = x
k=min(k,(int)1e6);
for(int i=0;i<=k;i++)
if(f(i,a) * b + c == i)
ans[++tot]=i;
if(tot==0) {printf("0n-1n");continue;}
printf("%dn",tot);
for(int i=1;i<=tot;i++)
printf("%d ",ans[i]);puts("");
}
else if(b==1&&c==0)
{
if(a==1)
{
int ans=0;
for(int i=1;i<=a1[0];i++)
if(a1[i]<=k)
ans++;
if(ans==0) {printf("0n-1n");continue;}
printf("%dn",ans);
for(int i=1;i<=ans;i++)
printf("%d ",a1[i]);printf("n");
}
else if(a==2)
{
int ans=0;
for(int i=1;i<=a2[0];i++)
if(a2[i]<=k)
ans++;
if(ans==0) {printf("0n-1n");continue;}
printf("%dn",ans);
for(int i=1;i<=ans;i++)
printf("%d ",a2[i]);printf("n");
}
else if(a==3)
{
int ans=0;
for(int i=1;i<=a3[0];i++)
if(a3[i]<=k)
ans++;
if(ans==0) {printf("0n-1n");continue;}
printf("%dn",ans);
for(int i=1;i<=ans;i++)
printf("%d ",a3[i]);printf("n");
}
else if(a==4)
{
int ans=0;
for(int i=1;i<=a4[0];i++)
if(a4[i]<=k)
ans++;
if(ans==0) {printf("0n-1n");continue;}
printf("%dn",ans);
for(int i=1;i<=ans;i++)
printf("%d ",a4[i]);printf("n");
}
else if(a==5)
{
int ans=0;
for(int i=1;i<=a5[0];i++)
if(a5[i]<=k)
ans++;
if(ans==0) {printf("0n-1n");continue;}
printf("%dn",ans);
for(int i=1;i<=ans;i++)
printf("%d ",a5[i]);printf("n");
}
}
else
{
tot=0;
//f(x)^a * b + c = x
for(int i=0;i<=k;i++)
if(f(i,a) * b + c == i)
ans[++tot]=i;
if(tot==0) {printf("0n-1n");continue;}
printf("%dn",tot);
for(int i=1;i<=tot;i++)
printf("%d ",ans[i]);puts("");
}
}
return 0;
}
// luogu-judger-enable-o2
#include<cstdio>
#include<algorithm>
#include<vector>
#define int long long
using namespace std;
const int MAXN=1e6+10;
//#define getchar() (p1==p2&&(p2=(p1=buf)+fread(buf,1,1<<20,stdin),p1==p2)?EOF:*p1++)
//char buf[1<<20],*p1=buf,*p2=buf;
inline int read()
{
char c=getchar();int x=0,f=1;
while(c<'0'||c>'9'){if(c=='-')f=-1;c=getchar();}
while(c>='0'&&c<='9'){x=x*10+c-'0';c=getchar();}
return x*f;
}
vector<int>v;
int check(int x)
{
int base=0;
while(x) base+=x%10,x/=10;
return base;
}
main()
{
int T=read();
while(T--)
{
int a=read(),b=read(),c=read(),k=read();
v.clear();
for(int i=0;i<=81;i++)
{
int x=i;
for(int j=1;j<a;j++) x=x*i;
x=x*b+c;
if(x<0||x>=k||check(x)!=i) continue;
v.push_back(x);
}
if(v.size()==0) {printf("0n-1n");continue;}
printf("%dn",v.size());
for(int i=0;i<v.size();i++)
printf("%d ",v[i]);
printf("n");
}
return 0;
}
- Mac上提升python运算速度-PyPy初体验
- python处理json数据(复杂的json转化成嵌套字典并处理)
- Pointer-network理论及tensorflow实战
- python3 log文件处理获取某天需要的数据
- 实战深度强化学习DQN-理论和实践
- Python 工匠:编写条件分支代码的技巧
- python3 下 Zabbix监控调用graph.get并且下载监控图
- 用R语言复盘美国总统大选结果~
- 最新Apache Spark平台的NLP库,助你轻松搞定自然语言处理任务
- 使用Seq2Seq+attention实现简单的Chatbot
- R语言可视化——用ggplot构造期待已久的雷达图
- 【实战】最新Deep Learning with Keras图书加代码,教你从零开发一个复杂深度学习模型(附下载)
- 基于zabbix 自动抓取每天监控数据!/usr/local/python/bin/python3.5
- 大过年的,一起来用Seq2Seq来作对联吧!
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 安卓-无敌解决ListView添加标题头无法正常显示的问题(歪门邪道)
- 贪心算法-活动选择问题(Python实现)
- 浅析C语言中一些“令人吃惊”的结构
- 贪心算法-分数背包问题(Python实现)
- 为什么GNE 不做全自动提取列表页的功能
- 百度地图开发如何自定义控件(无敌的解决办法)
- 百度地图如何创建一个属于自己的地图,附加到项目中?
- FreeRTOS系列第9篇---FreeRTOS任务概述基础篇
- 图书管理系统(四)图书管理系统实战(2)
- 源码分析之 FactoryBean接口不为人知的秘密
- 图书管理系统(三)图书管理系统实战(1)
- 图书管理系统(二)整合 SSM,你学会了么
- CellChat:细胞间相互作用分析利器
- 我对一类常考算法面试题的详细分析
- Python 面向对象编程(上篇)