清北集训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+;
#define getchar() (p1==p2&&(p2=(p1=buf)+fread(buf,1,1<<20,stdin),p1==p2)?EOF:*p1++)
char buf[<<],*p1=buf,*p2=buf;
inline int read()
{
char c=getchar();int x=,f=;
while(c<''||c>''){if(c=='-')f=-;c=getchar();}
while(c>=''&&c<=''){x=x*+c-'';c=getchar();}
return x*f;
}
int ans[MAXN],tot;
int f(int a,int p)
{
int base=,ans=;
while(a) base+=a%,a/=;
for(int i=;i<=p;i++)
ans=ans*base;
return ans;
}
int a1[]={,,,,,,,,,,};
int a2[]={,,,};
int a3[]={,,,,,,,};
int a4[]={,,,,,,,};
int a5[]={,,,,,,};
int main()
{
int T=read();
while(T--)
{
int a=read(),b=read(),c=read(),k=read();
if(a==&&c==)
{
tot=;
//f(x)^a * b + c = x
k=min(k,(int)1e6);
for(int i=;i<=k;i++)
if(f(i,a) * b + c == i)
ans[++tot]=i;
if(tot==) {printf("0\n-1\n");continue;}
printf("%d\n",tot);
for(int i=;i<=tot;i++)
printf("%d ",ans[i]);puts("");
}
else if(b==&&c==)
{
if(a==)
{
int ans=;
for(int i=;i<=a1[];i++)
if(a1[i]<=k)
ans++;
if(ans==) {printf("0\n-1\n");continue;}
printf("%d\n",ans);
for(int i=;i<=ans;i++)
printf("%d ",a1[i]);printf("\n");
}
else if(a==)
{
int ans=;
for(int i=;i<=a2[];i++)
if(a2[i]<=k)
ans++;
if(ans==) {printf("0\n-1\n");continue;}
printf("%d\n",ans);
for(int i=;i<=ans;i++)
printf("%d ",a2[i]);printf("\n");
}
else if(a==)
{
int ans=;
for(int i=;i<=a3[];i++)
if(a3[i]<=k)
ans++;
if(ans==) {printf("0\n-1\n");continue;}
printf("%d\n",ans);
for(int i=;i<=ans;i++)
printf("%d ",a3[i]);printf("\n");
}
else if(a==)
{
int ans=;
for(int i=;i<=a4[];i++)
if(a4[i]<=k)
ans++;
if(ans==) {printf("0\n-1\n");continue;}
printf("%d\n",ans);
for(int i=;i<=ans;i++)
printf("%d ",a4[i]);printf("\n");
}
else if(a==)
{
int ans=;
for(int i=;i<=a5[];i++)
if(a5[i]<=k)
ans++;
if(ans==) {printf("0\n-1\n");continue;}
printf("%d\n",ans);
for(int i=;i<=ans;i++)
printf("%d ",a5[i]);printf("\n");
}
}
else
{
tot=;
//f(x)^a * b + c = x
for(int i=;i<=k;i++)
if(f(i,a) * b + c == i)
ans[++tot]=i;
if(tot==) {printf("0\n-1\n");continue;}
printf("%d\n",tot);
for(int i=;i<=tot;i++)
printf("%d ",ans[i]);puts("");
} }
return ;
}
80分暴力
// luogu-judger-enable-o2
#include<cstdio>
#include<algorithm>
#include<vector>
#define int long long
using namespace std;
const int MAXN=1e6+;
//#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=,f=;
while(c<''||c>''){if(c=='-')f=-;c=getchar();}
while(c>=''&&c<=''){x=x*+c-'';c=getchar();}
return x*f;
}
vector<int>v;
int check(int x)
{
int base=;
while(x) base+=x%,x/=;
return base;
}
main()
{
int T=read();
while(T--)
{
int a=read(),b=read(),c=read(),k=read();
v.clear();
for(int i=;i<=;i++)
{
int x=i;
for(int j=;j<a;j++) x=x*i;
x=x*b+c;
if(x<||x>=k||check(x)!=i) continue;
v.push_back(x);
}
if(v.size()==) {printf("0\n-1\n");continue;}
printf("%d\n",v.size());
for(int i=;i<v.size();i++)
printf("%d ",v[i]);
printf("\n");
}
return ;
}
清北集训Day3T1(转换)的更多相关文章
- 清北集训Day6T1(生成函数)
听rqy说可以用生成函数做,感觉比较有意思 我们考虑在DP转移的时候, $5,7,9$这三个数是没有限制的 因此他们出现的次数用01串表示的话就是$1111111111111111......$ $3 ...
- 清北集训Day1T3 LYK loves jumping(期望DP)
题目描述 LYK在玩一个魔法游戏,叫做跳跃魔法. 有n个点,每个点有两个属性hi和ti,表示初始高度,和下降高度.也就是说,它初始时高度为hi,一旦LYK踩在这个点上,由于重力的影响,这个点的高度会下 ...
- 清北学堂2017NOIP冬令营入学测试P4745 B’s problem(b)
清北学堂2017NOIP冬令营入学测试 P4745 B's problem(b) 时间: 1000ms / 空间: 655360KiB / Java类名: Main 背景 冬令营入学测试 描述 题目描 ...
- 清北学堂2017NOIP冬令营入学测试 P4744 A’s problem(a)
清北学堂2017NOIP冬令营入学测试 P4744 A's problem(a) 时间: 1000ms / 空间: 655360KiB / Java类名: Main 背景 冬令营入学测试题,每三天结算 ...
- 清北Day 2
清北第二天,感受到了来自这个世界的不友善,大概把没听过不会的"名词"记录下来就已经一面了,然后被大佬说这都是最基础的东西,就很皮,那就趁别人练习字符串的题的时候,来写波博客了,倒不 ...
- 清北Day4
版权声明:如需转载请标明出处,未得到本人许可请勿转载. 今天就可以看到传说中的 数据结构 嘿嘿嘿嘿 都有什么呢 链表 队列 栈 st表 hash 线段树 树链剖分 一.栈: 放出来这个看烂了的图 值得 ...
- 济南清北学堂游记 Day 1.
快住手!这根本不是暴力! 刷了一整天的题就是了..上午三道题的画风还算挺正常,估计是第一天,给点水题做做算了.. rqy大佬AK了上午的比赛! 当时我t2暴力写挂,还以为需要用啥奇怪的算法,后来发现, ...
- 清明培训 清北学堂 DAY1
今天是李昊老师的讲授~~ 总结了一下今天的内容: 1.高精度算法 (1) 高精度加法 思路:模拟竖式运算 注意:进位 优化:压位 程序代码: #include<iostream>#in ...
- 清北省选 DAY last 集锦
这是题目描述的链接: http://lifecraft-mc.com/wp-content/uploads/2018/03/problems1.pdf (虽然这次没去清北,但还是厚颜无耻的做了一下这套 ...
随机推荐
- MyEclipse 中的一些快捷键
@import url(/css/cuteeditor.css); ------------------------------------- MyEclipse 快捷键1(CTRL) ------- ...
- Hoj_平方和与立方和
平方和与立方和 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Sub ...
- 【领略RxSwift源码】- 变换操作(Operators)
在上一篇中,我们分析了在RxSwift中的整个订阅流程.在开讲变换操作之前,首先要弄清楚Sink的概念,不清楚的同学可以翻看上一篇的分析.简单的来说,在每一次订阅操作之前都会进行一次Sink对流的操作 ...
- Swift 中实现 Promise 模式
在异步编程中,除了竟态处理.资源利用以外,另外一个难点就是流程管理.在拥有匿名函数.闭包这些特性的编程语言中,我们通常可以使用回调函数来做一个异步任务完成或失败时的处理.但当我们的业务逻辑逐渐复杂时, ...
- 详解优动漫PAINT中的图层模式
使用优动漫PAINT绘制漫画或者插画的时候,在其新建画布区域有一个基本颜色模式的选项,分别包括彩色模式.灰度模式和黑白位图模式,那么这三个模式有什么区别呢,我们在绘图的时候应该如何选择呢? 彩色模式: ...
- 反射API提供的常用类和函数
ReflectionParameter 取回了函数或方法参数的相关信息. {//要自行检查函数的参数,首先创建一个 ReflectionFunction 或 ReflectionMethod 的 实例 ...
- Bonjour/Zeroconf with Arduino
转自:http://gkaindl.com/software/arduino-ethernet/bonjour Bonjour/Zeroconf with Arduino DownloadVersio ...
- PHP 7 的五大新特性
1. 运算符(NULL 合并运算符) 把这个放在第一个说是因为我觉得它很有用.用法: $a = $_GET['a'] ?? 1; 它相当于: <php $a = isset($_GET['a'] ...
- 使用 Laravel 5.5+ 更好的来实现 404 响应
译文首发于 使用 Laravel 5.5+ 更好的来实现 404 响应,转载请注明出处! Laravel 5.5.10 封装了两个有用的路由器方法,可以帮助我们为用户提供更好的 404 页面.现在,当 ...
- python网络爬虫高清PDF资料分享
1.python+网络爬虫开发实战中文PDF高清版 链接:https://pan.baidu.com/s/1bks8J9kgqCArUlEoDg4acA 提取码:h9y2 复制这段内容后打开百度网盘手 ...