换零钱:将5元的人民币兑换成1元、5角和1角的硬币,共有多少种不同的兑换方法?
思路:
- 将每种可能的条件一一遍历
- if:判断是否符合要求
void change() {
float sum;
cout << "请输入计算金额:";
cin >> sum;
float one = 1, Five_corners = 0.5, one_corners = 0.1;
int count = 0;
for (int a = 0; a <= 5; a++) {
for (int b = 0; b <= 10; b++) {
for (int c = 0; c <= 50; c++) {
if (one * a + Five_corners * b + one_corners * c==sum) {
count++;
}
}
}
}
cout << "count=" << count;
}
找自守数:自守数是指一个数的平方的尾数等于该数自身的自然数。例如5×5=25,25×25=625,76×76=5776,9376×9376=87909376,求100000以内的自守数。
void Automorphic_number() {
int num=1;//记录整数位数
int nums = 0;//记录自守数个数
int aim= 100000;
for (int i = 1; i <= aim; i++) {
//法一:求整数的位数
//num = 1 + (int)log10(i);
//法二:求整数的位数
int a=i;//记录i,临时变量
while (a / 10 != 0) {
a /= 10;
num++;
}
//计算自守数
if ((i * i) % (int(pow(10,a))) == i) {//C 库函数 double pow(double x, double y) 返回 x 的 y 次幂,即 x^y
cout << " " << i << " ";
nums++;
}
}
cout <<endl<< "以上是100000以内的自守数,一共" << nums;
}
一辆以固定速度行驶的汽车,司机在上午10点看到里程表上的读数是一个对称数(即这个数从左向右读和从右向左读是完全一样的),为95859。两小时后里程表上出现了一个新的对称数。问该车的速度是多少?新的对称数是多少?
1.找对称数
//找对称数
bool Symmetrical_number(int num) {
int oid_num = num; //传入的数字
int new_num = 0; //颠倒后的数字
while (num) //当前num的位数大于1(值大于9)
{
//将new_num乘以10,然后加上num的个位数,
//使个位数从原来的后第n位变成前第n位
new_num = new_num * 10 + num % 10;
num /= 10; //num除以10,将个位数去掉
}
if (new_num == oid_num) //如果反转后的数字和原数字相同
return true;
else
return false;
}
一下为总代码程序
#include<iostream>
#include<math.h>
using namespace std;
//找零钱
void change() {
float sum;
cout << "请输入计算金额:";
cin >> sum;
float one = 1, Five_corners = 0.5, one_corners = 0.1;
int count = 0;
for (int a = 0; a <= 5; a++) {
for (int b = 0; b <= 10; b++) {
for (int c = 0; c <= 50; c++) {
if (one * a + Five_corners * b + one_corners * c==sum) {
count++;
}
}
}
}
cout << "count=" << count;
}
void Automorphic_number() {
int num=1;//记录整数位数
int nums = 0;//记录自守数个数
int aim= 100000;
for (int i = 1; i <= aim; i++) {
//法一:求整数的位数
//num = 1 + (int)log10(i);
//法二:求整数的位数
int a=i;//记录i,临时变量
while (a / 10 != 0) {
a /= 10;
num++;
}
//计算自守数
if ((i * i) % (int(pow(10,a))) == i) {//C 库函数 double pow(double x, double y) 返回 x 的 y 次幂,即 x^y
cout << " " << i << " ";
nums++;
}
}
cout <<endl<< "以上是100000以内的自守数,一共" << nums;
}
//找对称数
bool Symmetrical_number(int num) {
int oid_num = num; //传入的数字
int new_num = 0; //颠倒后的数字
while (num) //当前num的位数大于1(值大于9)
{
//将new_num乘以10,然后加上num的个位数,
//使个位数从原来的后第n位变成前第n位
new_num = new_num * 10 + num % 10;
num /= 10; //num除以10,将个位数去掉
}
if (new_num == oid_num) //如果反转后的数字和原数字相同
return true;
else
return false;
}
void main() {
//change();
//Automorphic_number();
int begin = 95859, destination = 0;
float speed = 0.0f;
while (begin++)
{
if (Symmetrical_number(begin)) {
break;
}
}
destination = begin;
cout << destination;
speed = (destination - 95859) / 2.0f;
cout << "车的速度是" << speed;
}