[关闭]
@sensitive-cs 2016-10-19T09:59:02.000000Z 字数 559 阅读 701

J - Lucky Mask

分析:

给出两个数字a和b,要求找到一个c,使得c>a且c中所有的4和7按顺序抽出来只存在一个b。

思路:

定义三个字符串,保存a和b,a递增,每一次将a中的4和7按顺序抽出组成c,判断c和b是否相等。若相等,则输出此时的a。

代码:

  1. #include <stdio.h>
  2. char a[15];
  3. char b[15];
  4. char c[15];
  5. int main()
  6. {
  7. long long e,f,ia = 0,ib = 0,i = 0,j = 0;
  8. int cal = 0;
  9. scanf("%I64d%I64d",&e,&f);
  10. while (f != 0)
  11. {
  12. b[ib] = f % 10;
  13. f /= 10;
  14. ib++;
  15. }
  16. for (i = e + 1; ;i++)
  17. {
  18. long long temp = i;
  19. while (temp != 0)
  20. {
  21. a[ia] = temp % 10;
  22. temp /= 10;
  23. ia++;
  24. }
  25. for (j = 0;j < ia;j++)
  26. {
  27. if (a[j] == 7 || a[j] == 4)
  28. {
  29. c[cal] = a[j];
  30. cal++;
  31. }
  32. }
  33. for (j = 0;j < ib;j++)
  34. {
  35. if (b[j] != c[j])
  36. break;
  37. }
  38. if (j == ib && j == cal)
  39. {
  40. printf("%I64d\n",i);
  41. break;
  42. }
  43. else
  44. {
  45. cal = 0;
  46. ia = 0;
  47. for (j = 0;j < 15;j++)
  48. {
  49. a[j] = 0;
  50. c[j] = 0;
  51. }
  52. }
  53. }
  54. return 0;
  55. }
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注