1
给定一个整数 n,请你统计其各位数字中 4 和 7 的出现次数。
如果 4 的出现次数加上 7 的出现次数恰好等于 4 或 7,则输出 YES,否则输出 NO。
例如,当 n=40047 时,4 出现了 2 次,7 出现了 1 次,2+1=3,既不是 4 也不是 7,因此,输出 NO;当 n=7747774 时,4 出现了 2 次,7 出现了 5 次,2+5=7,因此,输出 YES。
输入格式
一个整数 n。
输出格式
一行,YES 或者 NO。
数据范围
所有测试点满足 1≤n≤1018。
#include<bits/stdc++.h>
using namespace std;
string temp;
int sum_f,sum_s;
int main(){
cin>>temp;
for(auto c:temp){
if(c=='4')sum_f++;
else if(c=='7')sum_s++;
}
int judge=sum_f+sum_s
if(judge==4 || judge==7)cout<<"YES"<<endl;
else cout<<"NO";
return 0;
}
2
给定一个整数 n,请你统计其各位数字中 4 和 7 的出现次数。
如果 4 的出现次数加上 7 的出现次数恰好等于 4 或 7,则输出 YES,否则输出 NO。
例如,当 n=40047 时,4 出现了 2 次,7 出现了 1 次,2+1=3,既不是 4 也不是 7,因此,输出 NO;当 n=7747774 时,4 出现了 2 次,7 出现了 5 次,2+5=7,因此,输出 YES。
输入格式
一个整数 n。
输出格式
一行,YES 或者 NO。
数据范围
所有测试点满足 1≤n≤1018。
#include<bits/stdc++.h>
using namespace std;
string temp;
int main()
{
cin>>temp;
int sum=0,cnt=0;
// o(n);
for(int i=0;i<temp.length();i++){
if(temp[i]=='(')cnt++;
else if(cnt){
cnt--;
sum+=2;
}
}
cout<<sum;
return 0;
}
3
一个电话销售员正在整理他的电话簿。
电话簿中记录了他的全部客户的电话号码。
一个客户可能有不止一个电话号码。
不同客户可能拥有完全相同的电话号码。
电话簿中一共包含 n 条记录。
每条记录都是首先包含一个字符串,表示客户的姓名,然后包含一个整数,表示本条记录包含的电话号码数量,最后是本条记录所包含的电话号码。
不同客户的姓名两两不同,所以如果两条记录包含的客户姓名相同,那么我们认为这都是记录的同一人的电话信息。
同一记录中可能包含相同的电话号码,不同记录中也可能包含相同的电话号码。
在进行整理时,应遵守如下原则:
如果一个客户拥有多条记录,则需要将这些记录进行合并,每人只保留一条记录,去记录他的全部有效号码。
如果一个客户记录的多个电话号码完全相同,则只保留一个作为有效号码,其余的全部视为无效号码。
如果一个客户记录的两个不同电话号码 a 和 b 满足 a 是 b 的后缀,则号码 a 视为无效号码。
请输出整理后的电话记录。
输入格式
第一行包含整数 n,表示记录数量。
接下来 n 行,每行描述一条记录,首先包含一个长度不超过 10 的由小写字母构成的非空字符串,表示客户姓名,然后包含一个不超过 10 的正整数,表示本条记录包含的号码数量,最后包含本条记录的所有号码,每个号码都是长度不超过 10 的由数字构成的非空字符串,可能包含前导 0。
输出格式
首先输出一个整数 m,表示完成整理后的记录数量。
接下来 m 行,每行输出一条记录信息,格式要求与输入一致。
同一行的数据之间用单个空格隔开。
记录的先后顺序随意,一条记录中的号码顺序随意。
数据范围
前三个测试点满足 1≤n≤4。
所有测试点满足 1≤n≤20。
#include<bits/stdc++.h>
using namespace std;
//map函数本身只会对key value进行排序即第一个 关键字而不会对mapped value进行排序
unordered_map<string,vector<string>>S;
int n;
int main(){
cin>>n;
while(n--){
string name;
cin>>name;
int time;
cin>>time;
while(time--){
string str;
cin>>str;
reverse(str.begin(),str.end());
//map的插入后方并不需要count,仅仅在查找时刻用count
S[name].push_back(str);
}
}
cout<<S.size()<<endl;
for(auto& [name,ns]: S){
sort(ns.begin(),ns.end());
vector<string>res;
排序后的查找方法!!!
for(int i=0;i<ns.size();i++){
if(i+1<ns.size() && ns[i+1].find(ns[i])==0)continue;
res.push_back(ns[i]);
}
cout<<name<<" "<<res.size();
for(int i=0;i<res.size();i++){
reverse(res[i].begin(),res[i].end());
cout<<" "<<res[i];
}
cout<<endl;
}
return 0;
}