クマとデジタルの度合い
受け入れ:3638提出:7683
時間制限:1000分の2000 MS(Javaの/その他)メモリの制限:32768分の32768 K(Javaの/その他)
問題の説明
ベアのうち11、33および99の3つの図は、その倍数の全ての各桁素晴らしいですし、自分の倍数でなければならないことがわかりました。5 + 4 = 95 + 4 = 9の倍数が33である5454、33の倍数である:例では、と述べました。18 + 6 = 99の6 + 6 + 6 + 6 = 186倍でありながら、他の例では、666666は、99の倍数です。
ベア度も満足していないが、正の整数以外の11、33、99に加えて、見つかった「すべての倍数の各桁と、自分の倍数でなければならない」、しかし、彼らのデジタル数の倍数があり、あなたそしてまた、その倍数。例えば888888は、1212の倍数である、と言う、と数字と彼の8 + 8 + 8 + 8 + 8 = 248 = 24は1212の倍数です。
今、クマの私は、VVは、各桁の倍数であり、それはまた、XX、それの倍数となるよう、あなたに正の整数VV、XX、XXの数の存在を与えることを、知りたいですか?そのようなすべての番号xxを確認してください。
入力
「組の尋問の複数、最初の行は、正の整数含まTは正の整数であって、各テストのために問い合わせ、次に、データ列のいくつかのグループに代わっをVを。
- 1≤T≤100
- 1≤V≤10 9
出力
各クエリに対して、2つのラインの出力は、最初の行は正の整数含まmは、m個の質問のための代表Vは、満足するいくつかの条件が存在するXは。出力の2行目のmの全ての条件を満足する数、X大出力に小さなを。
サンプル入力
3
1
9
666666
サンプル出力
1
1
3
1 3 9
。6
1 2 6 9 3 18である
(注)
最初のクエリを、11数人のメンバーおよび= 1×1は、に等しい自体1×1であり、複数の、したがって実際V = 1答えます。第三の質問、666666各桁の36×= 9 4に等しく、それ自体9×7474である9ので、折り目9実際V = 666666件の慎重な計算が他に、見つけることができた後、回答9ことを除き1,2,3,6,18はまた答えています。
作成しようと効果の対象に公共要因を、範囲が利用可能10E9のある次のように多くて100以上の暴力的なソリューションの最大。V
V的各位和
V
V各位和
コード:
//1001
#include<iostream>
#include<vector>
using namespace std;
int main(){
ios::sync_with_stdio(false) ;
int t,v,tv,sum;
vector<int> vec(100);
cin>>t;
while(t--){
cin>>tv; v = tv;sum = 0; vec.clear();
while(tv){
sum += tv %10;
tv /= 10;
}
for(int i = 1 ; i <= sum;i++ ){
if(v % i == 0 && sum % i == 0)vec.push_back(i);
}
cout << vec.size()<<endl;
for(int i = 0;i < vec.size();i++){
cout<< vec[i];
if(i == vec.size()-1) cout << endl;
else cout << " ";
}
}
return 0;
}