1016 水仙花数 V2

  1. 1 秒
  2. 131,072 KB
  3. 160 分
  4. 6 级题
 
水仙花数是指一个 n 位数 ( n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身。(例如:1^3 + 5^3 + 3^3 = 153,1634 = 1^4 + 6^4 + 3^4 + 4^4)。
给出一个整数M,求 >= M的最小的水仙花数。

收起

 

输入

一个整数M(10 <= M <= 10^60)

输出

输出>= M的最小的水仙花数,如果没有符合条件的水仙花数,则输出:No Solution

输入样例

300

输出样例

370

sol:好像标算是打表,感觉非常假,然后百度可知水仙花数一共只有89个,所以完全可行
贴上ak王xmy的打表代码以供参考
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int M=1e9;
struct NUM{//压位高精
int t;ll a[];
friend NUM operator+(NUM x,NUM y){
int i;
for (i=;i<x.t || i<y.t || x.a[i];i++){
if (i+>=x.t) x.a[i+]=;
if (i<y.t) x.a[i]+=y.a[i];
if (x.a[i]>=M) x.a[i+]++,x.a[i]-=M;
}
x.t=i;
return x;
}
friend NUM operator*(NUM x,int y){
int i;
for (i=;i<x.t;i++) x.a[i]*=y;
for (i=;i<x.t || x.a[i];i++){
if (i+>=x.t) x.a[i+]=;
x.a[i+]+=x.a[i]/M,x.a[i]%=M;
}
x.t=i;
return x;
}
}f[][],s;//f[i][j]=i^j
int n,a[],c[],d[],t1,t2,n1[],n2[];
void dfs(int x,int y,NUM s){
t2=;
memset(c,,sizeof(c));
for (int i=;i<s.t;i++){
int t=s.a[i];
for (int j=;j<;j++) c[n2[t2++]=t%]++,t/=;
}
while (t2 && !n2[t2-]) t2--;
if (t2>n) return;
t1=;
NUM tmp=s+f[x][n]*(n-y);//最大能得到的数
for (int i=;i<tmp.t;i++){
int t=tmp.a[i];
for (int j=;j<;j++) n1[t1++]=t%,t/=;
}
while (t1 && !n1[t1-]) t1--;
if (t1<n) return;
if (x && t1==t2){
memset(d,,sizeof(d));
for (int i=n-;~i;i--)
if (n1[i]!=n2[i]) break;
else d[n1[i]]++;
for (int i=x+;i<=;i++)
if (a[i]<d[i]) return;
}
if (!x){
for (int i=;i<=;i++)
if (a[i]!=c[i]) return;
for (int i=t2-;~i;i--) putchar(n2[i]|);
puts("");
return;
}
for (int i=;i<=n-y;i++){
a[x]=i;
dfs(x-,y+i,s);
s=s+f[x][n];
}
}
int main(){
puts("");
for (int i=;i<;i++){
f[i][].t=f[i][].a[]=;
for (int j=;j<;j++) f[i][j]=f[i][j-]*i;
}
for (int i=;i<=;i++) n=i,dfs(,,s);
}

make


 

51nod1016的更多相关文章

随机推荐

  1. python:unittest之discover()方法批量执行用例

    自动化测试过程中,自动化覆盖的功能点和对应测试用例之间的关系基本都是1 VS N,如果每次将测试用例一个个单独执行,不仅效率很低, 无法快速反馈测试结果,而且维护起来很麻烦.在python的单元测试框 ...

  2. python:利用xlrd模块操作excel

    在自动化测试过程中,对测试数据的管理和维护是一个不可忽视的点.一般来说,如果测试用例数据不是太多的话,使用excel管理测试数据是个相对来说不错的选择. 这篇博客,介绍下如何利用python的xlrd ...

  3. linux配置PS1

    自己常用的格式: vi ~/.bashrc export PS1="\[\e[31;1m\]\u@\[\e[34;1m\]\h \[\e[36;1m\]\W $\[\e[37;1m\] &q ...

  4. WPF PasswordBox不支持绑定解决方法

    原文:WPF PasswordBox不支持绑定解决方法 PasswordBox的Password属性因为安全原因不支持直接绑定,可以使用依赖属性实现.直接插入代码 public class Passw ...

  5. C#发邮件_EmailHelper

    EmailHelper类 public class EmailHelper { /// <summary> /// 发送邮件 /// </summary> /// <pa ...

  6. java.net.UnknownHostException: lc001 未知的网络服务

    java.net.UnknownHostException: lc001 未知的网络服务 读取的是虚拟机的名称 一.查询环境变量 :echo $HOSTNAME lc001 没什么问题 二.查host ...

  7. Linux系统多网卡环境下的路由配置

    Linux下路由配置命令 1. 添加主机路由 route add -host 192.168.1.11 dev eth0 route add -host 192.168.1.12 gw 192.168 ...

  8. 朱晔和你聊Spring系列S1E3:Spring咖啡罐里的豆子

    标题中的咖啡罐指的是Spring容器,容器里装的当然就是被称作Bean的豆子.本文我们会以一个最基本的例子来熟悉Spring的容器管理和扩展点. 阅读PDF版本 为什么要让容器来管理对象? 首先我们来 ...

  9. 学习用Node.js和Elasticsearch构建搜索引擎(3):使用curl命令操作elasticsearch

    使用Elasticsearch不免要提到curl工具,curl是利用URL语法在命令行方式下工作的开源文件传输工具.官网地址:https://curl.haxx.se/ 因为elasticsearch ...

  10. javaweb之Cookie学习

    Cookie简介 HTTP是无状态协议,服务器不能记录浏览器的访问状态,也就是说服务器不能区分中两次请求是否由一个客户端发出.这样的设计严重阻碍的Web程序的设计.如:在我们进行网购时,买了一条裤子, ...