关于十二生肖的数学发现(C++)
把数字看成是年份,然后根据生肖赋值。这里把鼠年赋值为1,牛年赋值为2,虎年赋值为3,兔年赋值为4,龙年赋值为5,蛇年赋值为6,马年赋值为7,羊年赋值为8,猴年赋值为9,鸡年赋值为10,狗年赋值为11,猪年赋值为12。比如数字1,我们把它看成是公元1年,公元1年是鸡年,赋值10,用1和10做差得绝对值,答案为9。
所有的答案都会落到0,3,6,9这四个数中(如果数字的值大于12,做差的时候则把数字的每一位相加,直到数字的大小归到1至12之中,再与原数字对应的生效所赋的值进行做差)。
代码如下:
#include <iostream>
#include <fstream>
#include <cstdlib>
#include <cmath>
using namespace std;
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
int s(int n) {
int sum = 0, t; while (n != 0) // 当 n 不等于 0 的时候就执行循环体或者用 n>0 作为条件
{
t = n % 10; // n 对 10 求余算出个位数 t
sum += t; // sum = sum + t // 把求出的 t 值累加到 sum 中
n = n / 10; // n 除以 10 去除个位上的值
}
return sum; // 输出累加的值
}
string zodiac(int n) {
int a=4, t;
t = (n - a)%12;
if(n > a)
switch(t){
case 0: return "鼠年";
case 1: return "牛年";
case 2: return "虎年";
case 3: return "兔年";
case 4: return "龙年";
case 5: return "蛇年";
case 6: return "马年";
case 7: return "羊年";
case 8: return "猴年";
case 9: return "鸡年";
case 10: return "狗年";
case 11: return "猪年";
default: return 0;
}
else{
t = -t; switch(t){
case 0: return "鼠年";
case 1: return "猪年";
case 2: return "狗年";
case 3: return "鸡年";
case 4: return "猴年";
case 5: return "羊年";
case 6: return "马年";
case 7: return "蛇年";
case 8: return "龙年";
case 9: return "兔年";
case 10: return "虎年";
case 11: return "牛年";
default: return 0;
}
}
}
int nb(string year) {
if(year == "鼠年") {
return 1;
}
else if(year == "牛年"){
return 2;
}
else if(year == "虎年"){
return 3;
}
else if(year == "兔年"){
return 4;
}
else if(year == "龙年"){
return 5;
}
else if(year == "蛇年"){
return 6;
}
else if(year == "马年"){
return 7;
}
else if(year == "羊年"){
return 8;
}
else if(year == "猴年"){
return 9;
}
else if(year == "鸡年"){
return 10;
}
else if(year == "狗年"){
return 11;
}
else{
return 12;
}
}
int main(int argc, char** argv) {
ofstream fout;
fout.open("data.txt");//将fout对象和文件绑定起来()
int temp;
string year;
int count;
for(int i = 1;i <= 25000;++i) {
temp = i;
while(temp > 12) {
temp = s(temp);
}
year = zodiac(i);
count = nb(year);
fout << temp << " " << i << " " << year << " " << count << " " << abs(temp - count) << endl;
}
return 0;
}
运行结果:
1 1 鸡年 10 9
2 2 狗年 11 9
3 3 猪年 12 9
4 4 鼠年 1 3
5 5 牛年 2 3
6 6 虎年 3 3
7 7 兔年 4 3
8 8 龙年 5 3
9 9 蛇年 6 3
10 10 马年 7 3
11 11 羊年 8 3
12 12 猴年 9 3
4 13 鸡年 10 6
5 14 狗年 11 6
6 15 猪年 12 6
7 16 鼠年 1 6
8 17 牛年 2 6
9 18 虎年 3 6
10 19 兔年 4 6
2 20 龙年 5 3
3 21 蛇年 6 3
4 22 马年 7 3
5 23 羊年 8 3
6 24 猴年 9 3
7 25 鸡年 10 3
8 26 狗年 11 3
9 27 猪年 12 3
10 28 鼠年 1 9
11 29 牛年 2 9
3 30 虎年 3 0
4 31 兔年 4 0
5 32 龙年 5 0
6 33 蛇年 6 0
7 34 马年 7 0
8 35 羊年 8 0
9 36 猴年 9 0
10 37 鸡年 10 0
11 38 狗年 11 0
12 39 猪年 12 0
4 40 鼠年 1 3
5 41 牛年 2 3
6 42 虎年 3 3
7 43 兔年 4 3
8 44 龙年 5 3
9 45 蛇年 6 3
10 46 马年 7 3
11 47 羊年 8 3
12 48 猴年 9 3
4 49 鸡年 10 6
5 50 狗年 11 6
6 51 猪年 12 6
7 52 鼠年 1 6
8 53 牛年 2 6
9 54 虎年 3 6
10 55 兔年 4 6
11 56 龙年 5 6
12 57 蛇年 6 6
4 58 马年 7 3
5 59 羊年 8 3
6 60 猴年 9 3
7 61 鸡年 10 3
8 62 狗年 11 3
9 63 猪年 12 3
10 64 鼠年 1 9
11 65 牛年 2 9
12 66 虎年 3 9
4 67 兔年 4 0
5 68 龙年 5 0
6 69 蛇年 6 0
7 70 马年 7 0
8 71 羊年 8 0
9 72 猴年 9 0
10 73 鸡年 10 0
11 74 狗年 11 0
12 75 猪年 12 0
4 76 鼠年 1 3
5 77 牛年 2 3
6 78 虎年 3 3
7 79 兔年 4 3
8 80 龙年 5 3
9 81 蛇年 6 3
10 82 马年 7 3
11 83 羊年 8 3
12 84 猴年 9 3
4 85 鸡年 10 6
5 86 狗年 11 6
6 87 猪年 12 6
7 88 鼠年 1 6
8 89 牛年 2 6
9 90 虎年 3 6
10 91 兔年 4 6
11 92 龙年 5 6
12 93 蛇年 6 6
4 94 马年 7 3
5 95 羊年 8 3
6 96 猴年 9 3
7 97 鸡年 10 3
8 98 狗年 11 3
关于十二生肖的数学发现(C++)的更多相关文章
- 一些对数学领域及数学研究的个人看法(转载自博士论坛wcboy)
转自:http://www.math.org.cn/forum.php?mod=viewthread&tid=14819&extra=&page=1 原作者: wcboy 现在 ...
- What Is Mathematics?
What Is Mathematics? The National Council of Teachers of Mathematics (NCTM), the world's largest org ...
- vijos 1085 Sunnypig闯三角关
{这个题5个正确,五个超时,不要盲目相信我的代码,谁有更好的算法或者优化请留言,(*^__^*) 嘻嘻……} 背景 贪玩的sunnypig请Charles为他打造一个奇幻世界,Charles欣然答应了 ...
- [日常] PKUWC 2018爆零记
吃枣药丸...先开个坑... day -1 上午周测...大翻车... 下午被查水表说明天必须啥啥啥...(当时我差点笑出声) 晚上领到笔记本一枚和一袋耗材(袜子) 然而班会开太晚回去没来得及收拾就晚 ...
- Sunnypig闯三角关
背景 贪玩的sunnypig请Charles为他打造一个奇幻世界,Charles欣然答应了.然而一向善于出难题的Charles是决不会轻易让sunnypig轻松拥有一个奇幻世界的,于是Charles在 ...
- 知无涯者(The Man Who Knew Infinity)
1913年的1月16号在剑桥大学的三一学院那里,著名的数学家哈代教授收到了一封信,信的开头是这种: "尊敬的先生.仅自我介绍例如以下,我是马德拉斯港务信托处的一个职员,年薪唯独20英镑.23 ...
- python中文语料分词处理,按字或者词cut_sentence
cut_sentence.py import string import jieba import jieba.posseg as psg import logging #关闭jieba日制 jieb ...
- 我搭的神经网络不work该怎么办!看看这11条新手最容易犯的错误
1. 忘了数据规范化 2. 没有检查结果 3. 忘了数据预处理 4. 忘了正则化 5. 设置了过大的批次大小 6. 使用了不适当的学习率 7. 在最后一层使用了错误的激活函数 8. 网络含有不良梯度 ...
- "数学口袋精灵"bug的发现
团队成员的博客园地址: 曾治业:http://www.cnblogs.com/zzy999/ 陈焕恳:http://www.cnblogs.com/4249ken/ 蓝叶:http://www.cnb ...
随机推荐
- Ubuntu 配置、使用samba共享文件夹
安装库 sudo apt install smbclient samba samba-common 启动samba sudo /etc/init.d/samba start 备份配置文件 sudo c ...
- Git使用教程五
基于ssh协议(推荐) 该方式与前面https方式相比,只是影响github对于用户的身份鉴权方式,对于git的具体操作(如提交本地.添加注释.提交远程等操作)没有任何影响. 生成公私钥对指令(需 ...
- 手写个jsonp
原生jsonp具体实现 先上代码: //http://www.baidu.com?aa=11&callback=my_jsonp04349289664328899 var jsonp = fu ...
- 分布式消息流平台:不要只想着Kafka,还有Pulsar
摘要:Pulsar作为一个云原生的分布式消息流平台,越来越频繁地出现在人们的视野中,大有替代Kafka江湖地位的趋势. 本文分享自华为云社区<MRS Pulsar:下一代分布式消息流平台全新发布 ...
- ☕【Java技术指南】「并发编程专题」Fork/Join框架基本使用和原理探究(基础篇)
前提概述 Java 7开始引入了一种新的Fork/Join线程池,它可以执行一种特殊的任务:把一个大任务拆成多个小任务并行执行. 我们举个例子:如果要计算一个超大数组的和,最简单的做法是用一个循环在一 ...
- Ordering the Soldiers 题解
CodeChef:ORDERS 简化题意: \(n\) 个人排队,给定每个人需要向左移动几个,求最终排列. 即还原逆序对. 错误想法 既然知道每个人向左移动 \(a_i\) 个,那就相当于让他的排名 ...
- 口护万亿市场杀出的实力派 Oclean欧可林
撰文 |懂懂 编辑 | 秦言 来源:懂懂笔记 在"青年必去的电影节"上,发现了一个跟他们打成一片的智能护齿"新星". 25日,备受关注的第15届FIRST青年电 ...
- python库--pandas--Series
方法 返回数据类型 参数 说明 Series(一维) .Series() Series 实例s 创建一维数据类型Series data=None 要转化为Series的数据(也可用dict ...
- PTA 面向对象程序设计 6-3 面积计算器(函数重载)
6-3 面积计算器(函数重载) 实现一个面积计算器,它能够计算矩形或长方体的面积. 函数接口定义: int area(int x, int y); int area(int x, int y, int ...
- 一起学习PHP的runkit扩展如何使用
这次又为大家带来一个好玩的扩展.我们知道,在 PHP 运行的时候,也就是部署完成后,我们是不能修改常量的值,也不能修改方法体内部的实现的.也就是说,我们编码完成后,将代码上传到服务器,这时候,我们想在 ...