测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

A27373. 吉利号码

填空题 较易

题目描述

吉利号码

题目描述

中国人喜欢图吉利,包括吉利数字,例如数字 8 或者数字 6,尤其是连着的数字更加喜欢,比如手机号码,汽车车牌,房间号码等等。有需求就会有市场,吉利数字的号码,往往意味着更贵的价格。请你根据以下规则,编写一个程序,根据规则给一个号码设置相应的价格。

具体规则如下:

1. 正常号码是 100 元。

2. 含有:6,8 任何一个数字,每出现一次加分。50 元,例如 4326,6875,9918都符合加分标准。其中,6875 被加 2 个 50 元,就相当于加 100 元;9918 被加 50 元。

3. 如果出现升序或者降序的情况,不管升序还是降序,号码涨价 3 倍。例如:5678,4321 都要贵 3 倍。注意:例如 5567,4331 等有相同元素的号码不算降序、升序。

4. 如果出现三个相同数字情况,都涨 6 倍。例如:4888,6665,7777 都满足加分的标准。注意:7777 因为满足这条标准两次,所以这条规则给它涨两个 6倍,也就是 12 倍。

5. 如果符合 AABB 或者 ABAB 模式的,价格涨一倍。例如:2255,3939,7777 都符合这个模式,所以都会涨价。注意:7777 因为满足这条标准两次,所以这条标准给它涨 2 倍,同时 7777 也是连号,也会在之前连号的基础上继续涨价。

请编写程序按照所有规则,求一个号码的最终价格!要求程序从标准输入接收数据,在标准输出上输出结果。

输入格式

输入共 1 行,输入一个四位正整数,就是待计算的号码。

输出格式

输出共 1 行,一个整数,表示这个号码对应的销售价格。

样例输入

6543

样例输出

450

注意事项

请严格按要求输出,不要多余的打印语句,例如:“输入 x=...” 等多余内容。

本程序的代码放在同一个源文件中,调试通过后,拷贝提交该源码。注意: main 函数需要返回 0。注意: 只使用 ANSI C/ANSI C++ 标准,不要调用依赖于编译环境或操作系统的特殊函数。注意: 所有依赖的函数必须明确地在源文件中 #include<xxx>, 不能通过工程设置而省略常用头文件。

参考答案

#include <iostream> using namespace std; int calculatePrice(int number) { int price = 100; // 初始价格为 100 元 // 检查数字 6 或 8 的出现次数 int numCopy = number; while (numCopy > 0) { int digit = numCopy % 10; if (digit == 6 || digit == 8) { price += 50; } numCopy /= 10; } // 检查升序或降序 int digit1 = number / 1000; int digit2 = (number % 1000) / 100; int digit3 = (number % 100) / 10; int digit4 = number % 10; bool isAscending = (digit1 < digit2 && digit2 < digit3 && digit3 < digit4); bool isDescending = (digit1 > digit2 && digit2 > digit3 && digit3 > digit4); if (isAscending || isDescending) { price *= 3; } // 检查三个相同数字 numCopy = number; int digitCount[10] = {0}; while (numCopy > 0) { digitCount[numCopy % 10]++; numCopy /= 10; } for (int i = 0; i < 10; i++) { if (digitCount[i] >= 3) { price *= 6; } } // 检查 AABB 或 ABAB 模式 numCopy = number; int digit1_ = numCopy % 10; numCopy /= 10; int digit2_ = numCopy % 10; numCopy /= 10; int digit3_ = numCopy % 10; numCopy /= 10; int digit4_ = numCopy % 10; if ((digit1_ == digit2_ && digit3_ == digit4_) || (digit1_ == digit3_ && digit2_ == digit4_)) { price *= 2; } return price; } int main() { int inputNumber; cin >> inputNumber; int finalPrice = calculatePrice(inputNumber); cout << finalPrice <<endl; return 0; }
上一题 下一题