计算出租车的实际里程

计算出租车的实际里程

【计算出租车的实际里程出租车司机自行修改了里程表,导致每次遇到4,就会跳过,比如4-->5、39-->40、400-->500
输入描述:

里程表的显示里程

输出描述:

里程表的实际里程

示例1

输入
5
输出
4

解释:因为实际里程到4之后,会跳过直接到5,所以里程表显示5的时候,实际里程应该为4

示例2

输入:
15
输出:
13
解释:实际里程到4之后,会跳过直接到5,多了1,到14之后直接跳到了15,又多了1,所以 13 = 15 - 1 - 1

C++

/*
出租车司机自行修改了里程表,导致每次遇到4,就会跳过,比如4-->5、39-->40、400-->500
输入描述:里程表的显示里程
输出描述:里程表的实际里程
例1:
输入:
5
输出:
4
解释:因为实际里程到4之后,会跳过直接到5,所以里程表显示5的时候,实际里程应该为4

例2:
输入:
15
输出:
13
解释:实际里程到4之后,会跳过直接到5,多了1,到14之后直接跳到了15,又多了1,所以 13 = 15 - 1 - 1
*/
#include<bits/stdc++.h>
using namespace std;

void cal(int &sum);
int main()
{
	int n;
	cin >> n;
	//加入n最大99999;区别个十百千万五位数字。


	int origin = 0;
	int sum = 0;
	for (int i = 0; i < n;i++)
	{
		origin++;
		sum++;
		cal(sum);
		if(sum == n)
		{
			break;
		}
	}
	cout << origin << endl;
	system("pause");
	return 0;
}
void cal(int &sum)
{
	int ge = sum % 10;
	int shi = (sum / 10) % 10;
	int bai = (sum / 100) % 10;
	int qian = (sum / 1000) % 10;
	int wan = sum / 10000;
	if(ge == 4)
	{
		sum = sum + 1;
	}
	if(shi == 4)
	{
		sum = sum + 10;
	}
	if(bai == 4)
	{
		sum = sum + 100;
	}
	if(qian == 4)
	{
		sum = sum + 1000;
	}
	if(wan == 4)
	{
		sum = sum + 10000;
	}
}


全部评论

相关推荐

06-12 16:23
已编辑
小米_软件开发(准入职员工)
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务