zoukankan      html  css  js  c++  java
  • java实现第四届蓝桥杯带分数

    带分数

    题目描述
    100 可以表示为带分数的形式:100 = 3 + 69258 / 714

    还可以表示为:100 = 82 + 3546 / 197

    注意特征:带分数中,数字1~9分别出现且只出现一次(不包含0)。

    类似这样的带分数,100 有 11 种表示法。

    题目要求:
    从标准输入读入一个正整数N (N<1000*1000)
    程序输出该数字用数码1~9不重复不遗漏地组成带分数表示的全部种数。
    注意:不要求输出每个表示,只统计有多少表示法!

    例如:
    用户输入:
    100
    程序输出:
    11

    再例如:
    用户输入:
    105
    程序输出:
    6

    import java.util.Scanner;
     
    public class Main {
    	public static int cnt=0,num=0;
    	public static boolean bool[]=new boolean[10];
    	public static void main(String[] args) {
    		Scanner sc=new Scanner(System.in);
            num=sc.nextInt();
            sc.close();
            for(int i=1;i<=7;i++)
            	for(int j=1;j<=7;j++)
            		if(9-i-j>=1)
            		{
            			dfs(0,0,0,i,j,9-i-j);
            		}
            System.out.println(cnt);
            
    	}
    	public static void dfs(int a,int b,int c,int alen,int blen,int clen)
    	{
    		if(alen==0&&blen==0&&clen==0)
    		{
    			if(b%c==0&&b/c==num-a)
    			{
    				cnt++;
    			}
    			return;
    		}
    		for(int i=1;i<10;i++)
    		{
    			if(!bool[i])
    			{
    				bool[i]=true;
    				if(alen>0)
    					dfs(a*10+i,b,c,alen-1,blen,clen);
    				else if(blen>0)
    					dfs(a,b*10+i,c,alen,blen-1,clen);
    				else if(clen>0)
    					dfs(a,b,c*10+i,alen,blen,clen-1);
    				bool[i]=false;
    			}
    		}
    	}
     
    }
    
  • 相关阅读:
    SQL Server 存储过程
    String.format Tutorial
    第五次
    第四次
    第三次
    第一次作业
    第二次
    c/c++
    HelloWorld出现的问题
    Android系统架构
  • 原文地址:https://www.cnblogs.com/a1439775520/p/13077300.html
Copyright © 2011-2022 走看看