题目:带分数    100 可以表示为带分数的形式:100 = 3 + 69258 / 714    还可以表示为:100 = 82 + 3546 / 197    注意特征:带分数中,数字1~9分别出现且只出现一次(不包含0)。    类似这样的带分数,100 有 11 种表示法。题目要求:
从标准输入读入一个正整数N (N<1000*1000)
程序输出该数字用数码1~9不重复不遗漏地组成带分数表示的全部种数。
注意:不要求输出每个表示,只统计有多少表示法!
例如:
用户输入:
100
程序输出:
11再例如:
用户输入:
105
程序输出:
6
资源约定:
峰值内存消耗(含虚拟机) < 64M
CPU消耗  < 3000ms
代码如下import java.util.Scanner;public class test9 {
public static int jishu=0;//用于计算满足条件数的个数
public  static int[] a=new int[15];
public static int fenmu;
public static int fenzi=1;
public static int changshu=1;//ch常数部分
public static boolean flag=true;//一个标志位
public static int cishu=0;
public static void main(String [] args){
int k,temp;
int changshu;
Scanner s=new Scanner(System.in);
int r=s.nextInt();
for(changshu=1;changshu<r;changshu++){
test9.changshu=changshu;
for(fenmu=1;;fenmu++){//这点事有问题的,分母自加后值是没有变化,不知到为什么???
int  shengyu=r-changshu;
// System.out.println("shengyu="+shengyu);
fenzi=fenmu*shengyu;
System.out.println("fenmu="+fenmu+"  fenzi="+fenzi);
if(flag=true){
fenli();//进行数的分离操作
if(isShiWei()<10){
flag=true;
if(isShiWei()==9){
for(k=0;k<9;k++){
temp=a[k];
if(havaDai(temp)!=1){
break;
}else{
if(k==8){
jishu++;
}
}
}
}


}else{
flag=false;
}
}
if(flag==false)
break;
}


}
System.out.println("jishu"+jishu);
}

public static int isShiWei(){//判断整数部分 分子 分母上位数之和是否是十位
for(int i=14;i>=0;i--){
if(a[i]!=0){
// System.out.println("i+1="+(i+1));
return (i+1);
}

if(a[0]==0)
return 0;
}
return -1;
}


public static void fenli(){//此操作是为了将整数部分 分子 分母上的各个位的数字分离
int i=0;
int temp=0;
while(changshu!=0){

temp=changshu%10;
changshu=changshu/10;
// System.out.println("temp="+temp);
a[i]=temp;
i++;
}
while(fenmu!=0){
temp=fenmu%10;
fenmu=fenmu/10;
a[i]=temp;
i++;
}

while(fenzi!=0){
temp=fenzi%10;
fenzi=fenzi/10;
a[i]=temp;
i++;
}
System.out.println("i+1=    "+(i+1));
cishu++;
}
public static int  havaDai(int temp){
for(int i=0;i<10;i++){
if(temp==a[i]){
return 1;
}
}
return 0;
}
}静态域  蓝桥杯  java蓝桥杯java