综合解题思想

1、斐波那契数列对某一大数进行取模

#include<iostream>
using namespace std;
//斐波那契数列对某一大数进行取模
//
int f[10005];
int main()
{
	int mod = 1e9 + 7;

	f[1] = 1;
	f[2] = 1;
	int n;
	cin >> n;
	for (int i = 3; i <= n; i++)
	{
		f[i] = ((f[i - 1]) % mod + (f[i - 2]) % mod) % mod;
	}
	cout << f[n] << endl;
	return 0;
	
}

2、十进制转换为2-16进制

#include<iostream>
using namespace std;
//十进制转换为2-16进制
//
char jinzhi[10005];
int mod1 = 0;
int main()
{
	int N, Y;//N表示输入的十进制数,Y表示转换成某进制。
	cin >> N >> Y;
	int dvr;//dvr->除数(进制数),mod->除了几次
	if (N < 0)
	{
		cout << "-";
		N = -N;
	}
	while (N)//思想:除以某一进制的余数是此进制数从后往前的表示方法
	{
		dvr = N % Y;
		if (dvr<10)
			jinzhi[mod1] = (char)((int)'0' + dvr);
		else
			jinzhi[mod1] = (char)((int)'A' + (dvr-10));
		mod1++;
		N = N / Y;
	}
	if (mod1 == 0) {
		cout << mod1 << endl;
	}
	else {
		for (int i = mod1- 1; i >= 0; i--)
		{
			cout << jinzhi[i];
		}
	}
	cout << endl;
	return 0;
	
}

3、回文数变化(某一个不是回文数的数,通过循环加它的高低位变换的数后总会变为一个回文数)

题目要求

例如:

1、 输入:323,
输出:323。
2、 输入:349,
输出:349–>1292–>4213–>7337。

代码块

#include<iostream>
#include<cmath>
using namespace std;
//回文数变换
char zhancun[10005];
int cun(int n) {//将输入的数存入数组中(倒序存入)
	int cishu = 0;
	int yushu = 0;
	while (n) {
		yushu = n % 10;
		zhancun[cishu] = yushu;
		n = n / 10;
		cishu++;
	}
	return cishu-1;//返回有几位数
}
int main()
{
	int n; 
	cin >> n;
	bool t = true;
	cout << n;
	while (t) {
		bool tt = true;
		int cishu = cun(n);
		int biancishu = cishu;
		for (int i = 0; i < (ceil)((double)cishu / 2); i++)//ceil()向上取整
		{
			if (zhancun[i] != zhancun[biancishu]) {//判断前面的与后面的数是否一样
				tt = false;
				break;
			}
			else
			{
				biancishu--;
			}
		}
		if (tt) {  t = false; }
		else {//将数高位与低位倒置相加
			cout << "-->";
			int c = 0;
			int zhancunp = cishu;
			for (size_t i = 0; i <= cishu; i++)
			{
				c += ((int)zhancun[i]) * pow(10,zhancunp);
				zhancunp--;
			}
			n = n + c;
			cout << n;
		}
	}
	return 0;
	
}

输出

在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值