出来るだけ寝ていたい

1日最低12時間睡眠、寝たら負け

課題4 チャレンジ

これね。意味わかんないよね。今回の問題を読んで「あ、これは10桁パンデジタル数を求めるプログラムだなぁ」と思ったが、それ以上思いついた事なし。10桁パンデジタル数?何それ?と思う人はこれでも読んでみなよ。少しだけ頭が良くなった気がするから→wikipedia:パンデジタル数
今回のプログラムで考えた事はもう何も無い。とにかくif文の条件を死ぬ気で書いただけ。左辺の各桁の値を変数で置いて制約を作って、それと右辺のことも考えて制約を書いたって感じ。まあまあ、とりあえず見てよ。

package kadai1.prog1.main;
public class Prog003 {
            //-----------------------------------------------------------使ってないコード---------------------------------------------------------------------------//
            //素因数分解
            /*public static int primefac(long x){
                        int a=2,sum=0;
                        while(x>=a*a){
                                    if(x%a==0){
                                                x/=a;
                                                sum++;
                                    }else{
                                                a++;
                                    }
                        }
                        return sum ;
            }*/
            /*static int[] b;
            public static void primefac2(long x){
                        int a=2,i=0,sum=0;
                        int b[]=new int [50000];
                        while(x>=a){
                                    if(x%a==0){
                                                b[i]=a;
                                                System.out.println(a);
                                                i++;
                                                x/=a;
                                                sum++;
                                    }else{
                                                a++;
                                    }
                        }
                        System.out.println(sum);
            }
            //全探索
            public static boolean fullsearch(int j,int v,long x,int sum,int[] b){
                        int sum1=0;
                        if(j==sum && v>=10000 && v<100000
                                                && v/10000!=(v/1000-v/10000) && v/10000!=(v/100-v/1000-v/10000) && v/10000!=(v/10-v/10000-v/1000-v/100) && v/10000!=0
                                                && (v/1000-v/10000)!=(v/100-v/1000-v/10000) && (v/1000-v/10000)!=(v/10-v/10000-v/1000-v/100) && (v/1000-v/10000)!=0
                                                && (v/100-v/10000-v/1000)!=(v/10-v/10000-v/1000-v/100) && (v/100-v/10000-v/1000)!=0
                                                && (v/10-v/10000-v/1000-v/100)!=0
                                                && x/v/10000!=(x/v/1000-x/v/10000) &&x/ v/10000!=(x/v/100-x/v/1000-x/v/10000) && x/v/10000!=(x/v/10-x/v/10000-x/v/1000-x/v/100) && x/v/10000!=0
                                                && (x/v/1000-x/v/10000)!=(x/v/100-x/v/1000-x/v/10000) && (x/v/1000-x/v/10000)!=(x/v/10-x/v/10000-x/v/1000-x/v/100) && (x/v/1000-x/v/10000)!=0
                                                && (x/v/100-x/v/10000-x/v/1000)!=(x/v/10-x/v/10000-x/v/1000-x/v/100) && (x/v/100-x/v/10000-x/v/1000)!=0
                                                && (x/v/10-x/v/10000-x/v/1000-x/v/100)!=0 ){
                                    ++sum1;
                                    System.out.println(v+"*"+x/v+"="+x);
                                    System.out.println(sum1);
                                                return true;
                        }
                        if(fullsearch(j+1,v,x,sum,b)){
                                    return true;
                        }
                        if(fullsearch(j+1,v*b[j+1],x,sum,b)){
                                    return true;
                        }
                        return false;
            }*/
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------//
            public static void main(String[] args){
                        int sum=0;
                        outside:
                        for(int f=1;f<10;f++){
                                    for(int s=1;s<10;s++){
                                                for(int t=1;t<10;t++){
                                                            for(int q=1;q<10;q++){
                                                                        for(int w=1;w<10;w++){
                                                                                    for(int e=1;e<10;e++){
                                                                                                for(int r=1;r<10;r++){
                                                                                                            for(int y=1;y<10;y++){
                                                                                                                        for(int u=1;u<10;u++){
                                                                                                                                    int a=u*w;
                                                                                                                                    int b=(u*q+y*w+u*w/10);
                                                                                                                                    int c=(u*t+y*q+r*w+(u*q+y*w+u*w/10)/10);
                                                                                                                                    int d=(u*s+y*t+r*q+e*w+(u*t+y*q+r*w+(u*q+y*w+u*w/10)/10)/10);
                                                                                                                                    int g=(u*f+y*s+r*t+e*q+(u*s+y*t+r*q+e*w+(u*t+y*q+r*w+(u*q+y*w+u*w/10)/10)/10)/10);
                                                                                                                                    int h=(y*f+r*s+e*t+(u*f+y*s+r*t+e*q+(u*s+y*t+r*q+e*w+(u*t+y*q+r*w+(u*q+y*w+u*w/10)/10)/10)/10)/10);
                                                                                                                                    int i=(r*f+e*s+(y*f+r*s+e*t+(u*f+y*s+r*t+e*q+(u*s+y*t+r*q+e*w+(u*t+y*q+r*w+(u*q+y*w+u*w/10)/10)/10)/10)/10)/10);
                                                                                                                                    int j=(e*f+(r*f+e*s+(y*f+r*s+e*t+(u*f+y*s+r*t+e*q+(u*s+y*t+r*q+e*w+(u*t+y*q+r*w+(u*q+y*w+u*w/10)/10)/10)/10)/10)/10)/10);
                                                                                                                                    int k=(e*f+(r*f+e*s+(y*f+r*s+e*t+(u*f+y*s+r*t+e*q+(u*s+y*t+r*q+e*w+(u*t+y*q+r*w+(u*q+y*w+u*w/10)/10)/10)/10)/10)/10)/10)/10;
                                                                                                                                    if(f!=s && f!=t && f!=q && f!=w && f!=e && f!=r && f!=y && f!=u && f!=0
                                                                                                                                                && s!=t && s!=q && s!=w && s!=e && s!=r && s!=y && s!=u && s!=0
                                                                                                                                                && t!=q && t!=w && t!=e && t!=r && t!=y && t!=u && t!=0
                                                                                                                                                && q!=w && q!=e && q!=r && q!=y && q!=u && q!=0
                                                                                                                                                && w!=e && w!=r && w!=y && w!=u && w!=0
                                                                                                                                                && e!=r && e!=y && e!=u && e!=0
                                                                                                                                                && r!=y && r!=u && r!=0
                                                                                                                                                && y!=u && y!=0
                                                                                                                                                && u!=0
                                                                                                                                                && a!=b && a!=c && a!=d && a!=g && a!=h && a!=i && a!=j && a!=k && a!=0
                                                                                                                                                && b!=c && b!=d && b!=g && b!=h && b!=i && b!=j && b!=k && b!=0
                                                                                                                                                && c!=d && c!=g && c!=h && c!=i && c!=j && c!=k && c!=0
                                                                                                                                                && d!=g && d!=h && d!=i && d!=j && d!=k && d!=0
                                                                                                                                                && g!=h && g!=i && g!=j && g!=k && g!=0
                                                                                                                                                && h!=i && h!=j && h!=k && h!=0
                                                                                                                                                && i!=j && i!=k && i!=0
                                                                                                                                                && j!=k && j!=0
                                                                                                                                                && k!=0){
                                                                                                                                                System.out.println((10000*f+1000*s+100*t+10*q+w)+"*"+(10000*e+1000*r+100*y+10*u)+"="+(k)+(j)+(i)+(h)+(g)+(d)+(c)+(b)+(a)+"0");
                                                                                                                                                sum++;
                                                                                                                                                if(sum>=1000){
                                                                                                                                                            break outside;
                                                                                                                                                }
                                                                                                                                    }
                                                                                                                        }
                                                                                                            }
                                                                                                }
                                                                                    }
                                                                        }
                                                            }
                                                }
                                    }
                        }
}
}

ね?酷いでしょ?因みに上の方で書いたのは初めに右辺の各桁の変数を置いて、それを素因数分解。その後その素因数を何個か使って各桁の値が異なる5桁の数が作れるか調べる。作れたら10桁パンデジタル数をその5桁で割って出てきた5桁の数も各桁が異なるかを判断。全てがうまくいったら出力。というやり方でやれたら良いなぁという幻想のもと作られた悲しい関数たちです。dpの関数らへんで諦めたから完成すらしてないけどね。とりあえず自分はこんな感じで解いたってだけです。