Skip to content

E29982:一种等价类划分问题

hashing, http://cs101.openjudge.cn/practice/29982

cpp
#include <iostream>

using namespace std;
int cg(int t){
    int ret=0;
    while(t>0){
        ret+=t%10;
        t=t/10;
    }
    return ret;
}

int main(){
    int m,n,k;
    char u,v;
    cin>>m>>u>>n>>v>>k;
    int a[100000]={};
    int b[100000]={};
    for(int i=m+1;i<n;i++){
        a[i]=cg(i);
        if(cg(i)%k==0){
            b[i]=cg(i)/k;
        }
    }
    for(int p=1;p*k<=36;p++){
        int id=0;
        int idd=0;
        for(int i=m+1;i<n;i++){
            if(b[i]==p){
                idd=1;
                if(id==0){
                    cout<<i;
                    id++;
                }else{
                    cout<<","<<i;
                }
            }
        }
        if(idd==0)continue;
        cout<<'\n';
    }
    return 0;
}