记《204全国青少年信息素养大赛智能算法应用挑战赛复赛小学组》之第二题、吉利号码
接下来我会不断用C++来实现信奥比赛中的算法题、GESP考级编程题实现、白名单赛事考题实现,记录日常的编程生活、比赛心得,感兴趣的请关注,我后续将继续分享相关内容。本程序的代码放在同一个源文件中,调试通过后,拷贝提交该源码。操作系统的特殊函数。中国人喜欢图吉利,包括吉利数字,例如数字 8 或者数字 6,尤其是连着的数字。更加喜欢,比如手机号码,汽车车牌,房间号码等等。字的号码,往往意味着更贵的价格
·
吉利号码
【题目描述】
中国人喜欢图吉利,包括吉利数字,例如数字 8 或者数字 6,尤其是连着的数字
更加喜欢,比如手机号码,汽车车牌,房间号码等等。有需求就会有市场,吉利数
字的号码,往往意味着更贵的价格。请你根据以下规则,编写一个程序,根据规则
给一个号码设置相应的价格。
具体规则如下:
- 正常号码是 100 元。
- 含有:6,8 任何一个数字,每出现一次加分。50 元,例如 4326,6875,9918
都符合加分标准。其中,6875 被加 2 个 50 元,就相当于加 100 元;9918 被
加 50 元。 - 如果出现升序或者降序的情况,不管升序还是降序,号码涨价 3 倍。例如:
5678,4321 都要贵 3 倍。注意:例如 5567,4331 等有相同元素的号码不算降
序、升序。 - 如果出现三个相同数字情况,都涨 6 倍。例如:4888,6665,7777 都满足加分
的标准。注意:7777 因为满足这条标准两次,所以这条规则给它涨两个 6
倍,也就是 12 倍。 - 如果符合 AABB 或者 ABAB 模式的,价格涨一倍。例如:2255,3939,7777 都符
合这个模式,所以都会涨价。注意:7777 因为满足这条标准两次,所以这条
标准给它涨 2 倍,同时 7777 也是连号,也会在之前连号的基础上继续涨价。
请编写程序按照所有规则,求一个号码的最终价格!要求程序从标准输入接收数
据,在标准输出上输出结果。
【输入格式】
输入共 1 行,输入一个四位正整数,就是待计算的号码。
【输出格式】
输出共 1 行,一个整数,表示这个号码对应的销售价格。
【样例输入】(测试数据不包含本样例)
6543
【样例输出】
450
【注意事项】
请严格按要求输出,不要多余的打印语句,例如:“输入 x=…” 等多余内容。
本程序的代码放在同一个源文件中,调试通过后,拷贝提交该源码。注意: main 函
数需要返回 0。注意: 只使用 ANSI C/ANSI C++ 标准,不要调用依赖于编译环境或
操作系统的特殊函数。注意: 所有依赖的函数必须明确地在源文件中 #include
, 不能通过工程设置而省略常用头文件。
C++实现
#include<iostream>
using namespace std;
int main(){
string num;
cin>>num;
int basePrice=100;
int price = basePrice;
//判断是否包含6 or 8
for(char digit:num){
if(digit=='6'||digit=='8'){
price+=50;
}
}
bool isAscending =true,isDescending=true;
for(int i=1;i<=num.length();i++){
if(num[i]<num[i-1]){
isAscending = false;
}
if(num[i]>num[i-1]){
isDescending = false;
}
}
if(isAscending||isDescending){
price*=3;
}
for(int i=1;i<=num.length();i++){
int count=1;
for(int j=i+1;j<=num.length();j++){
if(num[i]==num[i-1]){
count++;
}
}
if(count>=3){
price*=6;
break;
}
}
if((num[0]==num[1] && num[2]==num[3])||
(num[0]==num[2] && num[1]==num[3])
){
price*=2;
}
cout<<price;
return 0;
}

后续
接下来我会不断用C++来实现信奥比赛中的算法题、GESP考级编程题实现、白名单赛事考题实现,记录日常的编程生活、比赛心得,感兴趣的请关注,我后续将继续分享相关内容
更多推荐



所有评论(0)