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. 长期招收linux驱动工程师

    公司:宝存科技 工作内容: 1.负责企业级ssd的feature设计和开发工作 2.负责ftl算法的设计及开发 3.排查客户问题 任职要求: 1.精通C语言 2.熟练掌握linux操作系统使用 3.熟 ...

  2. Sqlserver内存管理:限制最大占用内存(转载)

    一.Sqlserver对系统内存的管理原则是:按需分配,且贪婪(用完不还).它不会自动释放内存,因此执行结果集大的sql语句时,数据取出后,会一直占用内存,直到占满机器内存(并不会撑满,还是有个最大限 ...

  3. Python爬取豆瓣指定书籍的短评

    Python爬取豆瓣指定书籍的短评 #!/usr/bin/python # coding=utf-8 import re import sys import time import random im ...

  4. Python中for循环搭配else的陷阱

    假设有如下代码: for i in range(10): if i == 5: print 'found it! i = %s' % i else: print 'not found it ...' ...

  5. 固态硬盘的PCIE,SATA,M2,NVMe,AHCI分别都指什么?别再搞混了

    原文:https://baijiahao.baidu.com/s?id=1616207956596122967&wfr=spider&for=pc 科技娱乐屋 18-11-0420:5 ...

  6. SPA单页面优缺点

    优点: 1.体验好,不刷新,减少 请求  数据ajax异步获取 页面流程: 2.前后端分离 3.减轻服务端压力 4.共用一套后端程序代码,设配多端 缺点: 1.首屏加载过慢: 2.SEO 不利于搜索引 ...

  7. ajax相关问题

    1.contentType和dataType contentType 主要设置你发送给服务器的数据格式 dataType设置你收到服务器数据的格式(如text,json等),最常用的为json. 2. ...

  8. iOS-响应链(Responder Chain)

    2017.05.08 20:40* 字数 1306 阅读 740评论 6喜欢 9 工作接近一年,很久没有更新博客.工作中学到很多知识点后面将花时间整理,作为对一年知识学习的总结: 下面是本篇博客的写作 ...

  9. Masonry练习详解

    添加约束的方式: 1.通过使用NSLayoutConstraints添加约束到约束数组中,之前必须设置translatesAutoresizingMaskIntoConstraints = NO,即取 ...

  10. B-Tree 和 B+Tree

    B-Tree和B+Tree 本文来自 Hubery_James 的CSDN 博客 ,全文地址请点击:原文地址-干货满满 B+树索引是B+树在数据库中的一种实现,是最常见也是数据库中使用最为频繁的一种索 ...