奈樱. 2023-02-14 20:10 采纳率: 77.8%
浏览 45

关于#c++#的问题,请各位专家解答!

求各位帮我看一看如何解决问题

#include <iostream>
#include <algorithm>

using namespace std;

int days[] = { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };

bool check(int year)
{
    return year % 400 == 0 || year % 4 == 0 && year % 100 != 0; //闰年2月多一天
}

int get_day(int year, int month)
{
    if (month == 2) return 28 + check(year);
    return days[month];
}

int main()
{
    int n;
    cin >> n;

    string ans1, ans2;  //ans1回文数 ans2为ababbaba形回文数
    bool flag1 = false, flag2 = false; //两个哨兵
    for (int i = n / 10000; i <= 9999; i++) //枚举年份
    {
        char to_string;
        string a = to_string(i); //to_string整转字
        string b = a;
        reverse(b.begin(), b.end()); //反转b
        if (a + b <= to_string(n)) continue; //得到日期需大于输入日期

        int month = stoi(b.substr(0, 2)); //stoi字转整 substr分理出月份和天
        int day = stoi(b.substr(2, 2));
        if (month < 1 || month > 12) continue; //判断是否合法
        if (day < 1 || day > get_day(i, month)) continue;

        string s1 = a.substr(0, 2); //作为判断ababbaba型
        string s2 = a.substr(2, 2);
        if (!flag1) ans1 = a + b, flag1 = true;
        if (!flag2 && s1 == s2 && s1[0] != s1[1]) ans2 = a + b, flag2 = true; //判断ababbaba型

        if (flag1 && flag2) break; //得到两个回文数结束循环
    }

    cout << ans1 << endl;
    cout << ans2 << endl;
    return 0;
}






bug如下

img

  • 写回答

2条回答 默认 最新

  • 快乐鹦鹉 2023-02-14 20:35
    关注
    
    增加#include <string>   
    
    评论

报告相同问题?

问题事件

  • 创建了问题 2月14日

悬赏问题

  • ¥100 复现论文:matlab仿真代码编写
  • ¥15 esp32驱动GC9A01循环播放视频
  • ¥15 惠普360g9的最新bios
  • ¥30 这个功能用什么软件发合适?
  • ¥60 微信小程序,取消订单,偶尔订单没有改变状态
  • ¥15 用pytorch实现PPO算法
  • ¥15 关于调制信号的星座图?
  • ¥30 前端传参时,后端接收不到参数
  • ¥15 这是有什么问题吗,我检查许可证了但是显示有呢
  • ¥15 机器学习预测遇到的目标函数问题