九龙坡网站建设,网站图片优化,深圳建立网站营销,常州网站建设网站竞赛总览
CSDN 编程竞赛二十七期#xff1a;比赛详情 (csdn.net)
四道题都不难#xff0c;本来十分钟内就可以解决#xff0c;但是这次竞赛bug比较多#xff0c;体验不是很好。
竞赛题解
题目1、幸运数字
小艺定义一个幸运数字的标准包含三条#xff1a;1、仅包含4或…竞赛总览
CSDN 编程竞赛二十七期比赛详情 (csdn.net)
四道题都不难本来十分钟内就可以解决但是这次竞赛bug比较多体验不是很好。
竞赛题解
题目1、幸运数字
小艺定义一个幸运数字的标准包含三条1、仅包含4或7。2、幸运数字的前半部分数字之和等于后半部分数字之和。3、数字的长度是偶数。
#include cstdio
#include iostream
#include stringstd::string match (std::string str) {int len str.length ();if (len % 2 ! 0) return No;for (int i 0; i len; i) {if (str [i] ! 4 str [i] ! 7) return No;}int sum [2] {0, 0};for (int i 0, j len / 2; i j; i) {sum [0] str [i];sum [1] str [i j];}return sum [0] sum [1] ? YES : No;
}int main () {std::string str;std::cin str;printf (%s, match (str).c_str ());return 0;
}
先用规律1和规律3仅包含4或7数字的长度是偶数。
匹配失败直接返回假否则再用规律2进行匹配。
这道题的bug是返回Yes时字母是全部大写的而No只有首字母是大写的。博主提交之后发现只通过了40%的测试数据于是改了数据中的几个No发现通过的都是No的测试数据没有Yes。于是尝试修改Yes结果通过了此题。
题目2、投篮
小明投篮罚球线投球可得1分在三分线内投篮得分可以得到2分在三分线以外的地方投篮得分可以得到3分连续投进得分累计一旦有一个球没投进则得分清零重新计算。现给出所有得分记录清零不计入得分请你计算一下小明最多连续投进多少个球
#include cstdioint main () {int result 0;int n; scanf (%d, n);int data [n]; for (int i 0; i n; i) scanf (%d, data [i]);int num 1;for (int i 1; i n; i) {if (data [i] data [i - 1]) num 1;else {if (result num) result num;num 1;continue;}}if (result num) result num;printf (%d, result);return 0;
}
这道题似乎也有些问题从题目描述上看如果一直得零分应该是连续投进零个球。然而提交之后发现答案错误于是改成从1开始计数竟然通过了。
题目3、通货膨胀-x国货币
X国发行货币最高面额为n。次高面额为n的因子。以此类推。X国最多发行多少种货币。
#include cstdioint calc (int n) {int result 1;for (int i 2; n 1; i) {while (n % i 0) {n / i;result 1;}}return result;
}int main () {int n;scanf (%d, n);printf (%d, calc (n));return 0;
}这道题同样有些问题货币面额竟然可以重复可能题目意思是取因子之后用剩余数字作为新的n进行计算。但题目描述过于简单不知道真的是这个意思还是题目的bug。
题目4、最后一位
小明选择了一个正整数X然后把它写在黑板上。然后每一天他会擦掉当前数字的最后一位直到他擦掉所有数位。在整个过程中小明会把所有在黑板上出现过的数字记录下来然后求出他们的总和sum。例如X 509在黑板上出现过的数字依次是509, 50, 5他们的和就是564。小明现在给出一个sum小明想让你求出一个正整数X经过上述过程的结果是sum。
#include cstdioint calc (int n) {int result 0;while (n 0) {result n;n / 10;}return result;
}int main () {int sum; scanf (%d, sum);for (int i 0; i sum; i) {if (calc (i) sum) {printf (%d, i);break;}}return 0;
}不难看出一个数的sum一定比这个数本身大所以结果就在0到sum之间。
测试数据比较水直接使用暴力模拟法即可通过此题。