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;
}
输出