A - 123233(atCoder-380刷题笔记)
一、原题描述
Problem Statement
You are given a 66-digit positive integer NN.
Determine whether NN satisfies all of the following conditions.
- Among the digits of NN, the digit 11 appears exactly once.
- Among the digits of NN, the digit 22 appears exactly twice.
- Among the digits of NN, the digit 33 appears exactly three times.
Constraints
- NN is an integer satisfying 100000≤N≤999999100000≤N≤999999.
Input
The input is given from Standard Input in the following format:
NN
Output
Print Yes if NN satisfies all the conditions described in the problem statement, and No otherwise, in one line.
Sample Input 1
123233
Sample Output 1
Yes
123233123233 satisfies the conditions in the problem statement, so print Yes
.
Sample Input 2
123234
Sample Output 2
No
123234123234 does not satisfy the conditions in the problem statement, so print No
.
Sample Input 3
323132
Sample Output 3
Yes
Sample Input 4
500000
Sample Output 4
No
二、题目大意
问题陈述
您将获得一个 66 -digit 正整数 NN 。
确定是否 N 满足以下所有条件。
- 在 的数字 N 中,该数字只 1 出现一次。
- 在 的数字 N 中,该数字恰 2 好出现两次。
- 在 的数字 N 中,该数字恰 3 好出现了 3 次。
约束:
N 是一个满足 100000≤N≤999999100000≤N≤999999 的整数。
题目的意思就是问输入的一个6位数之后,看他的1是不是出现一次,2是不是出现二次,3是不是出现三次。换一种想法就是看这个六位数是不是122333。
解法一:那我们的解题思路是不是就可以将输入的数字看成字符串然后对其进行排序,最后看他是不是与“122333”相等。
代码实现如下所示:
#include<bits/stdc++.h>
using namespace std;
string s;
int main() {
cin >> s;
sort(s.begin(), s.end());
if(s == "122333") {
cout << "Yes";
}else {
cout << "No";
}
return 0;
}
上述的巧妙之处就是我们将这个输入的数字换成了字符串了。这样我们就可以使用字符串来进行处理了。
解法二:还有一种解法就是你可以一次一次遍历数字然后进行桶计数来解。
代码展示:
#include<iostream>
using namespace std;
typedef long long LL;
LL n, a[10];
int main() {
cin >> n;
for(int i = 0; i < 6; i++) {
a[n % 10]++;
n /= 10;
}
if(a[1] == 1 && a[2] == 2 && a[3] == 3) {
cout << "Yes";
} else {
cout << "No";
}
return 0;
}
以上就是我们这380第一题的两种解法了。大家下来可以自己试一下哦~~~