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. Git分支管理规范

    关于Git的一些分支管理规范... 一.分支与角色说明 Git 分支类型 master 分支(主分支) 稳定版本 develop 分支(开发分支) 最新版本 release 分支(发布分支) 发布新版 ...

  2. MVC5 + EF6 完整教程 (转)

    点击查看: MVC5 + EF6

  3. input表单提交完毕,返回重新填入有黄色背景,和 历史记录 清除

    <input autocomplete="value"> // 添加这个属性,可以解决然后添加一个css input:-webkit-autofill {box-sha ...

  4. 【重磅】Spring Boot 2.1.0 权威发布

    如果这两天登录 https://start.spring.io/ 就会发现,Spring Boot 默认版本已经升到了 2.1.0.这是因为 Spring Boot 刚刚发布了 2.1.0 版本,我们 ...

  5. 《程序猿闭门造车》之NBPM工作流引擎 - 项目整体架构

    前言: 又是一年一度的圣诞节,可这关我什么事呢 :( ,好不容易周末了,还是说说NBPM吧,前不久我发布了一篇关于工作流的文章:<程序猿闭门造车>之NBPM工作流引擎 - 开篇,很多爱好工 ...

  6. Jenkins部署net core小记

    作为一个不熟悉linux命令的neter,在centos下玩Jenkins真的是一种折磨啊,但是痛并快乐着,最后还是把demo部署成功!写这篇文章是为了记录一下这次部署的流程,和心得体会. 网上很多资 ...

  7. 软件工程(FZU2015) 助教总结

    SE_FZU目录:1 2 3 4 5 6 7 8 9 10 11 12 13 本次构建之法-SE助教工作,和福州大学张老师协作,福大学生基本发挥出了一定水平,在此做个小结. 教师 张老师本身的SE教学 ...

  8. CMake--静态库与动态库构建

    小结内容 建立一个静态库和动态库,提供 HelloFunc 函数供其他程序编程使用, HelloFunc 向终端输出Hello World 字符串. 安装头文件与共享库. 1.代码与CMakeList ...

  9. Java8 Stream实例--统计出所有含‘张’字的人员的平均年龄

    package com.zhangxueliang.demo; import java.util.ArrayList; import java.util.List; import java.util. ...

  10. jQuery EasyUI 选项卡面板tabs使用实例精讲

    1. 对选项卡面板区域 div 设置 class=”easyui-tabs” 2. 对选项卡面板区域添加多个 div,每个 div 就是一个选项卡(每个面板一定设置 title) 3. 设置面板 fi ...