题目描述-->p1900 自我数

本文转自@keambar

转载已经原作者同意

分析:

     思路还是比较好给出的:
用类似筛选素数的方法筛选自我数。 但是要注意到题目限制的空间仅有4M,不够开10^7 那么大的数组.
于是进一步分析问题我们发现每一次拓展出来的数最多比原数大63! 这是由于最多不过7位数,假设每一位都是9的话,拓展出来的数才大 7*9=63. 所以我们,对拓展出来的数取模,再用数组存下来。 至于输出自我数,经过测试.
在SGU的数据里自我数的答案没有超过10^6
刚好用掉4M的空间 ⊙﹏⊙b汗 最保险的方法还是仅将需要的自我数号码存下来,
排序后用二分查找判断当前找到的数是否是需要存下的.
最后再将存下的数按照读入的顺序输出.

原作者代码

#include<cstdio>
int n, m, k;
bool pd[100];
int f[1000000], tol;
int Find (int x) {
for (k = 0; x != 0; x /= 10)
k += x % 10;
return k;
}
void init() {
int i, j;
tol = 0, j = 0;
for (i = 1; i <= n; i++) {
if (!pd[i % 100]) f[++tol] = i;
else
pd[i % 100] = false;
//这里用了个小技巧,大大减少取模的次数,很容易想明白
if (i % 10 == 0) j = i + Find (i);
else
j += 2;
pd[j % 100] = true;
}
}
int main() {
scanf ("%d%d", &n, &m);
init();
printf ("%d\n", tol);
for (int i = 1; i <= m; i++) {
scanf ("%d", &k);
printf ("%d ", f[k]);
}
return 0;
}

本人辣鸡代码就不放了emmm

应原作者要求:本题亦可以在SGU上找到

//不过,我没有找到链接 emm

[转载]数学【p1900】 自我数的更多相关文章

  1. 洛谷 P1900 自我数

    P1900 自我数 题目描述 在1949年印度数学家D. R. Daprekar发现了一类称作Self-Numbers的数.对于每一个正整数n,我们定义d(n)为n加上它每一位数字的和.例如,d(75 ...

  2. P1900 自我数

    题意: 对于每一个正整数n,我们定义d(n)为n加上它每一位数字的和. 例如,d(75)=75+7+5=87.给定任意正整数n作为一个起点,都能构造出一个无限递增的序列:n, d(n), d(d(n) ...

  3. luogu1900 自我数

    分享一个非正解的做法 本题解内存最低(\(\le1\rm MiB\)) 但是不开O2会tle 思路:每个数字仅会更新出1个新的数字,而且这个新数字比旧数字最多也就大70多.所以这里还是利用" ...

  4. 【转载】nginx 并发数问题思考:worker_connections,worker_processes与 max clients

    注:这个文章主要是作者一直在研究nginx作为http server和反向代理服务器时候所谓最大的max_clients和 worker_connections的计算公式, 其实最后的结论也没有卡上公 ...

  5. 【数学建模】数模day13-灰色系统理论I-灰色关联与GM(1,1)预测

    接下来学习灰色系统理论. 0. 什么是灰色系统? 部分信息已知而部分信息未知的系统,我们称之为灰色系统.相应的,知道全部信息的叫白色系统,完全未知的叫黑色系统. 为什么采用灰色系统理论? 在给定信息不 ...

  6. hdu 5312 Sequence(数学推导——三角形数)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5312 Sequence Time Limit: 2000/2000 MS (Java/Others)  ...

  7. NOIp 数学 (小学奥数)

    Basic knowledge \[ C_n^m=\frac{n!}{m!(n - m)!} \] 快速幂 // Pure Quickpow inline int qpow(int n, int m, ...

  8. [转载]爬虫的自我解剖(抓取网页HtmlUnit)

    网络爬虫第一个要面临的问题,就是如何抓取网页,抓取其实很容易,没你想的那么复杂,一个开源HtmlUnit包,4行代码就OK啦,例子如下: 1 2 3 4 final WebClient webClie ...

  9. 一些对数学领域及数学研究的个人看法(转载自博士论坛wcboy)

    转自:http://www.math.org.cn/forum.php?mod=viewthread&tid=14819&extra=&page=1 原作者: wcboy 现在 ...

随机推荐

  1. CF763C Timofey and Remoduling

    题目戳这里. 这道题目纯粹是考思维. 若\(2N \le M\),由于答案肯定是\(s,s+d,\dots,s+(N-1)d\),我们任意枚举两个数\(a,b\),不妨设\(b\)在数列中出现在\(a ...

  2. [NOIP2002] 字串变换 宽搜+深度优化

    这道题硬是让我用STL水过.......而且题解里说的什么双向宽搜,交替扩展............... 这道题反正,STL用就用吧,但是状态数可以卡到千亿级别,因为这个东西是阶乘扩展的,然后我们发 ...

  3. bzoj 4004 [JLOI2015]装备购买 拟阵+线性基

    [JLOI2015]装备购买 Time Limit: 20 Sec  Memory Limit: 128 MBSubmit: 1820  Solved: 547[Submit][Status][Dis ...

  4. Java之戳中痛点 - (3)三目运算符的两个操作数类型尽量一致

    先看一个例子: package com.test; public class TernaryOperator { public static void main(String[] args) { in ...

  5. linux crontab执行shell脚本中包含相对路径的问题

    实例一 test.sh文件 echo `date`>test.log 配置crontab 设置 */1 * * * * sh /data/test.sh 在/data/目录下,未找到test.l ...

  6. 解决tomcat不支持中文路径的问题

    问题描述: 开发文件下载功能时,因为需求比较简单,要求下载一个说明文件.于是,直接给出了文件所在服务器的地址,通过链接直接下载此文件(因需求简单,未考虑安全方面的问题-_-||). 在这个过程中,文件 ...

  7. [BZOJ3275]Number解题报告|网络流

    Description 有N个正整数,需要从中选出一些数,使这些数的和最大.若两个数a,b同时满足以下条件,则a,b不能同时被选1:存在正整数C,使a*a+b*b=c*c2:gcd(a,b)=1 这道 ...

  8. CodeVS1747_NOI2002_荒岛野人_Savage_C++

    题目:http://codevs.cn/problem/1747/ 对于一个环,我们经常用取余来表示它走过若干圈后的位置 那么第 i 个野人第 x 年时所在的位置可表示为:(c[i]+p[i]*x)% ...

  9. 应对ubuntu linux图形界面卡住的方法

    有的时候,我的ubuntu图形界面会卡住,当然这个时候你可以重新启动,不过最好的办法应该是结束这个桌面进程 那桌面卡住了怎么来结束桌面进程呢? 这时候就需要打开tty了 按下键盘ctrl+alt+f1 ...

  10. 利用os、hash模块生成目录下所有文件的md5

    hashlib用于对字符串或者文件进行加密. 使用方法1: hashlib.md5('str').hexdigest() 使用MD5对str进行加密,使用hexdigest(),16进制的方式打印   ...