Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<bits/stdc++.h>
- using namespace std;
- int D[10005];
- int temp[10005];
- int id,x;
- vector<int>ans[10005];
- void call(int n,int idx,int i){
- if(n==1){
- for(int j=0;j<idx;j++){
- ans[x].push_back(temp[j]);
- }
- x++;
- return;
- }
- //cout<<id<<endl;
- for(;i<id;i++){
- if(n%D[i]==0&&(n/D[i]>=D[i] || n==D[i])){
- temp[idx]=D[i];
- call(n/D[i],idx+1,i);
- }
- }
- }
- int main()
- {
- int n;
- while(cin>>n && n){
- id=0;
- x=0;
- for(int i=2;i*i<=n;i++){
- if(n%i==0&&n/i!=i){
- D[id++]=i;
- D[id++]=n/i;
- }
- else if(n%i==0){
- D[id++]=i;
- }
- }
- sort(D,D+id);
- if(id)
- call(n,0,0);
- cout<<x<<endl;
- for(int i=0;i<x;i++){
- cout<<ans[i][0];
- for(int j=1;j<ans[i].size();j++){
- cout<<' '<<ans[i][j];
- }
- cout<<endl;
- ans[i].clear();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment