蓝桥杯(天干地支)

题目描述

古代中国使用天干地支来记录当前的年份。

天干一共有十个,分别为:甲(jiǎ)、乙(yǐ)、丙(bǐng)、丁(dīng)、戊(wù)、己(jǐ)、庚(gēng)、辛(xīn)、壬(rén)、癸(guǐ)。

地支一共有十二个,分别为:子(zǐ)、丑(chǒu)、寅(yín)、卯(mǎo)、辰(chén)、巳(sì)、午(wǔ)、未(wèi)、申(shēn)、酉(yǒu)、戌(xū)、 亥(hài)。

将天干和地支连起来,就组成了一个天干地支的年份,例如:甲子。

20202020 年是庚子年。

每过一年,天干和地支都会移动到下一个。例如 20212021 年是辛丑年。

每过 6060 年,天干会循环 66 轮,地支会循环 55 轮,所以天干地支纪年每 6060 年轮回一次。例如 19001900 年,19601960 年,20202020 年都是庚子年。

给定一个公元纪年的年份,请输出这一年的天干地支年份。

输入描述

输入一行包含一个正整数,表示公元年份。

其中有 ,输入的公元年份为不超过 99999999 的正整数。

输出描述

输入一行包含一个正整数,表示公元年份。

输入输出样例

示例

输入

2020

输出

gengzi

运行限制

  • 最大运行时间:1s
  • 最大运行内存: 128M

代码实现:

#include<iostream>
using namespace std;
char a[10][6]={"jia","yi","bing","ding","wu","ji","geng","xin","ren","gui"};
char b[12][6]={"zi","chou","yin","mao","chen","si","wu","wei","shen","you","xu","hai"};
int main()
{
  int n,N=1900;
  scanf("%d",&n);
  int num=n-N,i,j;
  if(num>=0)
  {
    i=num%10;
    j=num%12;
    if(i<=3)
    i=i+6;
    else
    i=i-4;
    cout<<a[i]<<b[j]<<endl;
  }
  else//即小于1900年
  {
    num=-num;
    i=num%10;
    j=num%12;
    if(i>6)
    i=10-(i-6);
    else
    i=6-i;
    if(j>0)
    j=12-j;
    printf("%s%s",a[i],b[j]);
  }
  return 0;
}

理解:

题干中给出了几年分别对应着什么,所以可以通过对天干和地支的分别循环达到找到新的天干地支的目的,就以题干中给出的例子作为分界点:在那一年之前的,和在那一年之后的。

而我又设置了一个i一个j用来存第几个数组

 其中设置个数的时候也要考虑,是否会到数组最后或者最前面,不要使数组超范围。

最后了解二维数组当成几个一维数组的使用方法

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值