UVA 12009 - Avaricious Maryanna(数论)
UVA 12009 - Avaricious Maryanna
题意:给定一个n。求出n个数位组成的数字x,x^2的前面|x|位为x
思路:自己先暴力打了前几组数据,发现除了1中有0和1以外,其它数据都是由前一项往上再加入一位得到的,因此设新数字为(a∗10k+x)2=(a∗10k)2+x2+2∗a∗10k∗x
因此(a∗10k+x)=((a∗10k)2+x2+2∗a∗10k∗x)/10k%10
化简后得到x2/10k%10+2∗a∗x%10
因此仅仅要能求出x2/10k%10。然后再枚举a(0
<= a <= 9),去推断一下符合不符合,符合就加到前面一位就可以。然后就先预处理出500位的答案。
那么如今问题仅仅剩下x2/10k%10这个的解。这个值是等于x^2后|x|
+ 1位上的数字,模拟高精度乘法求出就可以
代码:
#include <stdio.h>
#include <string.h> int t, n;
char a[505], b[505];
int ans[505], num[505]; int cal(char *str) {
memset(ans, 0, sizeof(ans));
int len = strlen(str);
for (int i = len - 1; i >= 0; i--)
num[len - i - 1] = str[i] - '0';
for (int i = 0; i < len; i++) {
for (int j = 0; j < len; j++) {
if (i + j > len) continue;
ans[i + j] += num[i] * num[j];
}
}
for (int i = 0; i < len; i++) {
ans[i + 1] += ans[i] / 10;
ans[i] %= 10;
}
return ans[len];
} void init() {
a[500] = '\0'; b[500] = '\0';
a[499] = '5'; b[499] = '6';
for (int i = 498; i >= 0; i--) {
int aa = cal(a + i + 1);
int bb = cal(b + i + 1);
for (int j = 0; j < 10; j++) {
if ((2 * j * 5 + aa) % 10 == j)
a[i] = j + '0';
if ((2 * j * 6 + bb) % 10 == j)
b[i] = j + '0';
}
}
} int main() {
init();
int cas = 0;
scanf("%d", &t);
while (t--) {
scanf("%d", &n);
printf("Case #%d:", ++cas);
if (n == 1) printf(" 0 1 5 6\n");
else {
if (a[500 - n] == '0' && b[500 - n] == '0') printf("Impossible\n");
else if (a[500 - n] == '0') printf(" %s\n", b + 500 - n);
else if (b[500 - n] == '0') printf(" %s\n", a + 500 - n);
else {
if (strcmp(a + 500 - n, b + 500 - n) < 0) printf(" %s %s\n", a + 500 - n, b + 500 - n);
else printf(" %s %s\n", b + 500 - n, a + 500 - n);
}
}
}
return 0;
}
UVA 12009 - Avaricious Maryanna(数论)的更多相关文章
- uva 12009 - Avaricious Maryanna(暴力)
option=com_onlinejudge&Itemid=8&category=516&page=show_problem&problem=3160" ta ...
- UVA 10627 - Infinite Race(数论)
UVA 10627 - Infinite Race option=com_onlinejudge&Itemid=8&page=show_problem&category=516 ...
- uva 10555 - Dead Fraction)(数论)
option=com_onlinejudge&Itemid=8&category=516&page=show_problem&problem=1496" st ...
- uva 10560 - Minimum Weight(数论)
题目连接:uva 10560 - Minimum Weight 题目大意:给出n,问说至少须要多少个不同重量的砝码才干称量1~n德重量,给出所选的砝码重量,而且给出k,表示有k个重量须要用上述所选的砝 ...
- UVA 11754 - Code Feat(数论)
UVA 11754 - Code Feat 题目链接 题意:给定一个c个x, y1,y2,y3..yk形式,前s小的答案满足s % x在集合y1, y2, y3 ... yk中 思路:LRJ大白例题, ...
- UVA 718 - Skyscraper Floors(数论)
UVA 718 - Skyscraper Floors 题目链接 题意:在一个f层高的楼上,有e个电梯,每一个电梯有x,y表示y + k * x层都能够到,如今要问从a层是否能到达b层(中间怎么换乘电 ...
- uva 10692 - Huge Mods(数论)
题目链接:uva 10692 - Huge Mods 题目大意:给出一个数的次方形式,就它模掉M的值. 解题思路:依据剩余系的性质,最后一定是行成周期的,所以就有ab=abmod(phi[M])+ph ...
- uva 11728 - Alternate Task(数论)
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/u011328934/article/details/36409469 option=com_onli ...
- UVa 1393 - Highways(数论)
链接: https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...
随机推荐
- visual studio 2013使用github获取代码
如图点击"视图""团队资源管理器". 点击主页上方的那个插头形状按钮"连接到团队项目".点击"克隆" 然后在克隆 ...
- iPad web APP 开发相关
1.移除 browser chrome,全屏启动 <meta name="apple-mobile-web-app-capable" content="yes&q ...
- Java多线程Master-Worker模式
Java多线程Master-Worker模式,多适用于需要大量重复工作的场景中. 例如:使用Master-Worker计算0到100所有数字的立方的和 1.Master接收到100个任务,每个任务需要 ...
- 使用SuperSocket打造逾10万长连接的Socket服务
SuperSocket 是一个轻量级, 跨平台而且可扩展的 .Net/Mono Socket 服务器程序框架.你无须了解如何使用 Socket, 如何维护 Socket 连接和 Socket 如何工作 ...
- HTTPS 建立连接的详细过程
HTTPS是在HTTP的基础上和ssl/tls证书结合起来的一种协议,保证了传输过程中的安全性,减少了被恶意劫持的可能.很好的解决了解决了http的三个缺点(被监听.被篡改.被伪装) 对称加密和非对称 ...
- ASP.Net Controls 用法大全
The FindControl method of the System.Web.UI.Control class appears simple enough to use. In fact, the ...
- 使用 Rust 构建分布式 Key-Value Store
欢迎大家前往腾讯云社区,获取更多腾讯海量技术实践干货哦~ 引子 构建一个分布式 Key-Value Store 并不是一件容易的事情,我们需要考虑很多的问题,首先就是我们的系统到底需要提供什么样的功能 ...
- JAVA提高十三:Hashtable&Properties深入分析
最近因为一些琐碎的事情,导致一直没时间写博客,正好今天需求开发完的早,所以趁早写下本文,本文主要学习的是Hashtable的分析,因为上面一篇文章研究的是HashMap,而Hashtable和Hash ...
- 如何用while循环 输出一个九九乘法表
方法一 i = 1 while i < 10: k = 1 while k <= i: print('%d*%d=%2d '% (i,k,i*k),end='') #end='' 表示不换 ...
- MongoDB中的MapReduce介绍与使用
一.简介 在用MongoDB查询返回的数据量很大的情况下,做一些比较复杂的统计和聚合操作做花费的时间很长的时候,可以用MongoDB中的MapReduce进行实现 MapReduce是个非常灵活和强大 ...