$题解CF110A【ほぼラッキーナンバー】$

$ CF110Aほぼラッキーナンバー$
まだ比較的良好なトピックは、あなたの手の練習に使用することができます\((QAQ)を\)


タイトルが\(N \)\(長い\長い\)の範囲で、私は、私は休憩を下に見てみたい理由を、知っていない数字は、使用したい文字列を行うこと。
......言わない入力
判事にので\(N \)ので、我々はカスタム関数の開くことができる「のようなラッキーナンバー」であるpd1タイプを、機能があるべきboolやる「のようなラッキーナンバー」かどうかを判断するため、 。

bool pd1(string s)  //自定义函数
{
    int t=0;  //计数器清零
    for(int i=0;i<s.size();i++)
    {
        if(s[i]=='7'||s[i]=='4')
        t++;  //如果数是'4'或'7'的话,计数器++
    }
    if(pd2(t)) return 1;  //判断计数器是否符合条件
    return 0;   //不符合条件,返回0
}

ねえ、このコードを書くことは完了していない、まだこの1のコードを参照してくださいif(pd2(t)) return 1; pd2(t)が、何地獄?私たちは以下のコードを与えるだろう、心配しないでください。

bool pd2(int n)
{
    if(n==0) return 0;  //没有'4'或'7' ,返回0
    while(n!=0)
    {
        if(n%10!=7)
        {
            if(n%10!=4)
            return 0;  //不符合条件,返回0
        }
        if(n%10!=4)
        {
            if(n%10!=7)
            return 0;  //不符合条件,返回0
        }
        n/=10;
    }   //分解n
    return 1;   //一定符合条件,返回1
}

さて、これらの一般的な内容は、以下の完全なコードがあるとします。

#include<bits/stdc++.h>
using namespace std;
bool pd2(int n)
{
    if(n==0) return 0;
    while(n!=0)
    {
        if(n%10!=7)
        {
            if(n%10!=4)
            return 0;
        }
        if(n%10!=4)
        {
            if(n%10!=7)
            return 0;
        }
        n/=10;
    }
    return 1;
}
bool pd1(string s)
{
    int t=0;
    for(int i=0;i<s.size();i++)
    {
        if(s[i]=='7'||s[i]=='4')
        t++;
    }
    if(pd2(t)) return 1;
    return 0;
}
int main()
{
    string s;
    cin>>s;
    if(pd1(s)) cout<<"YES"<<endl;
    else cout<<"NO"<<endl;
}

おすすめ

転載: www.cnblogs.com/Luke-Skywalker/p/11331269.html