c++ - 在计数回文中出现逻辑错误
问题描述
问题描述:
比赛在 n 天 hh 小时、mm 分钟和 ss 秒后结束。给定两个 n 值,我们会在指定的区间内找到多少个 nhhmmss 格式的回文?
如果一个字符串向后读取与向前读取相同,则称该字符串为回文。
约束输入 一行包含两个整数 n1 和 n2,其中 n1<n2
输出一个整数,表示此倒计时间隔内的回文数
时间限制 3
示例示例 1
输入
1 2
输出
472
解释
我们需要检查从 1000000 到 2235959 的数字,仅包括最后 6 位数字对应于时间的数字。我们找到了 472 个这样的数字:1000001、1001001、1002001、1003001、1004001、...、2231322、2232322、2233322、2234322、2235322
示例 2
输入
0 2
输出
708
解释
有708个回文:0000000, 0001000, 0002000, 0003000, 0004000, ..., 2231322, 2232322, 2233322, 2234322, 2235322
我的代码:
#include<iostream>
using namespace std;
long int count=0,hh=0,mm=0,ss=0;
int isPalindrome(int n)
{
int rev = 0;
for (int i = n; i > 0; i /= 10)
rev = rev*10 + i%10;
return (n==rev);
}
void countPal(int min, int max)
{
for (int i = min; i <= max;)
{ int time;
time=i*1000000+hh*10000+mm*100+ss;
if (isPalindrome(time))
count++;
++ss;
if(ss>59)
{ ++mm; ss=0;}
if(mm>59)
{++hh; mm=0;}
if(hh>23)
{ ++i; hh=0;}
}
}
int main()
{ int n1,n2;
cin>>n1>>n2;
if(n1==0)
n1++;
countPal(n1,n2);
cout<<count;
return 0;
}
对于测试用例 1、2,我得到 288,而答案是 472,我哪里出错了?
解决方案
推荐阅读
- firebase - Firebase“too_big”错误查询具有大量子项的 ref
- node.js - 如何在mongodb的0对象数组中插入数据
- ionic-framework - 当我调用 storage.get(key) 时,IONIC Storage 为空
- spring-boot - 相同应用程序实例之间的 Pivotal Cloud Foundry p2p 通信
- c# - 客户端的多人碰撞问题
- python - 任何实际有效的 concurrent.futures 超时?
- c - 条件编译有什么好处?
- linked-list - 在派生类型过程中区分头节点和其他节点
- java - 查找 100 个随机元素的数组是否包含不重复的数字?
- sql - 在 Teradata SQL 中创建宏