关于十二生肖的数学发现(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

posted on 2021-10-17 11:30  飞凤颖悟绝伦  阅读(587)  评论(0编辑  收藏  举报

导航