UVA 12009 - Avaricious Maryanna

题目链接

题意:给定一个n。求出n个数位组成的数字x,x^2的前面|x|位为x

思路:自己先暴力打了前几组数据,发现除了1中有0和1以外,其它数据都是由前一项往上再加入一位得到的,因此设新数字为(a∗10k+x)2=(a∗10k)2+x2+2∗a∗10kx

因此(a∗10k+x)=((a∗10k)2+x2+2∗a∗10kx)/10k%10

化简后得到x2/10k%10+2∗ax%10

因此仅仅要能求出x2/10k%10。然后再枚举a(0
<= a <= 9),去推断一下符合不符合,符合就加到前面一位就可以。然后就先预处理出500位的答案。

那么如今问题仅仅剩下x2/10k%10这个的解。这个值是等于x^2后|x|
+ 1位上的数字,模拟高精度乘法求出就可以

代码:

  1. #include <stdio.h>
  2. #include <string.h>
  3.  
  4. int t, n;
  5. char a[505], b[505];
  6. int ans[505], num[505];
  7.  
  8. int cal(char *str) {
  9. memset(ans, 0, sizeof(ans));
  10. int len = strlen(str);
  11. for (int i = len - 1; i >= 0; i--)
  12. num[len - i - 1] = str[i] - '0';
  13. for (int i = 0; i < len; i++) {
  14. for (int j = 0; j < len; j++) {
  15. if (i + j > len) continue;
  16. ans[i + j] += num[i] * num[j];
  17. }
  18. }
  19. for (int i = 0; i < len; i++) {
  20. ans[i + 1] += ans[i] / 10;
  21. ans[i] %= 10;
  22. }
  23. return ans[len];
  24. }
  25.  
  26. void init() {
  27. a[500] = '\0'; b[500] = '\0';
  28. a[499] = '5'; b[499] = '6';
  29. for (int i = 498; i >= 0; i--) {
  30. int aa = cal(a + i + 1);
  31. int bb = cal(b + i + 1);
  32. for (int j = 0; j < 10; j++) {
  33. if ((2 * j * 5 + aa) % 10 == j)
  34. a[i] = j + '0';
  35. if ((2 * j * 6 + bb) % 10 == j)
  36. b[i] = j + '0';
  37. }
  38. }
  39. }
  40.  
  41. int main() {
  42. init();
  43. int cas = 0;
  44. scanf("%d", &t);
  45. while (t--) {
  46. scanf("%d", &n);
  47. printf("Case #%d:", ++cas);
  48. if (n == 1) printf(" 0 1 5 6\n");
  49. else {
  50. if (a[500 - n] == '0' && b[500 - n] == '0') printf("Impossible\n");
  51. else if (a[500 - n] == '0') printf(" %s\n", b + 500 - n);
  52. else if (b[500 - n] == '0') printf(" %s\n", a + 500 - n);
  53. else {
  54. if (strcmp(a + 500 - n, b + 500 - n) < 0) printf(" %s %s\n", a + 500 - n, b + 500 - n);
  55. else printf(" %s %s\n", b + 500 - n, a + 500 - n);
  56. }
  57. }
  58. }
  59. return 0;
  60. }

UVA 12009 - Avaricious Maryanna(数论)的更多相关文章

  1. uva 12009 - Avaricious Maryanna(暴力)

    option=com_onlinejudge&Itemid=8&category=516&page=show_problem&problem=3160" ta ...

  2. UVA 10627 - Infinite Race(数论)

    UVA 10627 - Infinite Race option=com_onlinejudge&Itemid=8&page=show_problem&category=516 ...

  3. uva 10555 - Dead Fraction)(数论)

    option=com_onlinejudge&Itemid=8&category=516&page=show_problem&problem=1496" st ...

  4. uva 10560 - Minimum Weight(数论)

    题目连接:uva 10560 - Minimum Weight 题目大意:给出n,问说至少须要多少个不同重量的砝码才干称量1~n德重量,给出所选的砝码重量,而且给出k,表示有k个重量须要用上述所选的砝 ...

  5. UVA 11754 - Code Feat(数论)

    UVA 11754 - Code Feat 题目链接 题意:给定一个c个x, y1,y2,y3..yk形式,前s小的答案满足s % x在集合y1, y2, y3 ... yk中 思路:LRJ大白例题, ...

  6. UVA 718 - Skyscraper Floors(数论)

    UVA 718 - Skyscraper Floors 题目链接 题意:在一个f层高的楼上,有e个电梯,每一个电梯有x,y表示y + k * x层都能够到,如今要问从a层是否能到达b层(中间怎么换乘电 ...

  7. uva 10692 - Huge Mods(数论)

    题目链接:uva 10692 - Huge Mods 题目大意:给出一个数的次方形式,就它模掉M的值. 解题思路:依据剩余系的性质,最后一定是行成周期的,所以就有ab=abmod(phi[M])+ph ...

  8. uva 11728 - Alternate Task(数论)

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/u011328934/article/details/36409469 option=com_onli ...

  9. UVa 1393 - Highways(数论)

    链接: https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...

随机推荐

  1. web前端优化--DOM性能优化

    1.DOM访问与修改的优化: DOM访问是有代价的,修改DOM则会引起DOM的重绘与重排,而这两种操作会消耗性能. (1)缓存DOM:将频繁访问的对象或属性使用变量缓存起来,每次访问的时候,直接使用变 ...

  2. aria-label

    元素中的 aria-label用来命名一个元素     它的值可以是任何字符   读屏软件就会读出aria-label里的内容 <div role=”form” aria-labelledby= ...

  3. 用UiPath导入RPA实践1:VirtualBox的安装

      之前说了关于RPA的一些概念,但对于RPA到底是个什么东西,能干什么,咋么干都没有具体的概念,所以后面分几回,用[UiPath]这个工具为基础说说RPA的实际应用,希望能抛砖引玉. 在试用新的东西 ...

  4. 表字符集latin1,client如何查看中文字符

    表结构如下: . row *************************** Table: my_data_7e Create Table: CREATE TABLE `my_data_7e` ( ...

  5. vagrant扩容

    参考: https://gist.github.com/christopher-hopper/9755310 https://www.madcoder.cn/vagrant-box-resize.ht ...

  6. 一步一步带你实现virtual dom(二) -- Props和事件

    很高兴我们可以继续分享编写虚拟DOM的知识.这次我们要讲解的是产品级的内容,其中包括:设置和DOM一致性.以及事件的处理. 使用Babel 在继续之前,我们需要弥补前一篇文章中没有详细讲解的内容.假设 ...

  7. Science发表的超赞聚类算法

    作者(Alex Rodriguez, Alessandro Laio)提出了一种很简洁优美的聚类算法, 可以识别各种形状的类簇, 并且其超参数很容易确定. 算法思想 该算法的假设是类簇的中心由一些局部 ...

  8. AIO5程序中审批跳转条件:超过某一个值必须总经理审批

    以实际需求为例看下系统中如何设置: 客户需求:采购订单中对总金额进行限制,超过20000的话必须要经过总经理审批含税金额<20000:采购部门某个员工发起→直接主管批→财务主管知会含税金额≥20 ...

  9. 初学者没有搞明白的GOROOT,GOPATH,GOBIN,project目录

    我们接下来一个一个来看关于Go语言中的三个目录的详细解释先通过go env查看go的环境变量(我这里是mac的环境,所以可能和你的不同) localhost:~ zhaofan$ go env GOA ...

  10. ConstraintLayout+radioGroup做一个tab.简单好用。

    主页tab是必须会有的,各种实现也很多.各有千秋.但目标都是简单.可控.今天用ConstraintLayout+radioGroup做一个tab.简单性可控性都还可以.本文目的把ConstraintL ...