zoukankan      html  css  js  c++  java
  • 带分数

    历届试题 带分数  

    时间限制:1.0s   内存限制:256.0MB 
    问题描述

    100 可以表示为带分数的形式:100 = 3 + 69258 / 714。

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

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

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

    输入格式

    从标准输入读入一个正整数N (N<1000*1000)

    输出格式

    程序输出该数字用数码1~9不重复不遗漏地组成带分数表示的全部种数。

    注意:不要求输出每个表示,只统计有多少表示法!

    样例输入1
    100
    样例输出1
    11
    样例输入2
    105
    样例输出2
    6
    code:
     1 package com.zhj.prev;
     2 
     3 import java.util.Scanner;
     4 
     5 public class MixedNumbers {
     6     public static void main(String[] args) {
     7 
     8         Scanner mScanner = new Scanner(System.in);
     9         int n = mScanner.nextInt();
    10         long startMili = System.currentTimeMillis();
    11 
    12         int i, j, k, count;
    13         count = 0;
    14         for (i = 1; i <= n - 1; i++)
    15             for (k = 1; k <= 9999; k++) {
    16                 if (i != k) {
    17                     j = (n - i) * k;
    18                     if (judge(i, j, k) == 1) {
    19                         count++;
    20                         System.out.println(n + "= " + i + " + " + j + "/" + k);
    21                     }
    22                 }
    23             }
    24         System.out.println(count + "种");
    25 
    26         long endMili = System.currentTimeMillis();
    27         System.out.println(endMili - startMili + "ms");
    28     }
    29 
    30     /**
    31      * 判断整数i,j,k 中1-9数字是否出现,且只出现1次,是返回1,否则返回0
    32      * 
    33      * @param i
    34      *            整数部分
    35      * @param j
    36      *            分子
    37      * @param k
    38      *            分母
    39      * @return 返回1,符合题目带分数的要求,不符合返回0
    40      */
    41     public static int judge(int i, int j, int k) {
    42         int[] num = new int[11];
    43         int l, g;
    44         for (l = 0; l < 10; l++) {
    45             num[l] = 0;
    46         }
    47         while (i != 0) {
    48             num[g = i % 10]++;
    49             if (num[g] > 1)
    50                 return 0;
    51             i = i / 10;
    52         }
    53         while (j != 0) {
    54             num[g = j % 10]++;
    55             if (num[g] > 1) {
    56                 return 0;
    57             }
    58             j = j / 10;
    59         }
    60         while (k != 0) {
    61             num[g = k % 10]++;
    62             if (num[g] > 1) {
    63                 return 0;
    64             }
    65             k = k / 10;
    66         }
    67         // 判断是否包含有0
    68         if (num[0] > 0) {
    69             return 0;
    70         }
    71         // 判断是否有遗漏
    72         for (l = 1; l < 10; l++) {
    73             if (num[l] == 0) {
    74                 return 0;
    75             }
    76         }
    77         return 1;
    78     }
    79 
    80 }

     -

  • 相关阅读:
    C# .NET 微信开发-------当微信服务器推送消息时如何接收处理
    P1991 无线通讯网[MST]
    P2330 [SCOI2005]繁忙的都市【MST】
    P1546 最短网络 Agri-Net【MST】
    P3225 [HNOI2012]矿场搭建【割点 + 求点双 + 简单组合数】
    P3119 [USACO15JAN]Grass Cownoisseur G [ Tarjan + 缩点 + 拓扑序 + dp + 最长路] [好题]
    P2746 [USACO5.3]校园网Network of Schools [tarjan缩点]
    P1196 [NOI2002]银河英雄传说 【带权并查集】
    P1197 [JSOI2008]星球大战 [删边求连通块个数]
    GPLT L2-004 这是二叉搜索树吗?
  • 原文地址:https://www.cnblogs.com/zhjsll/p/4396319.html
Copyright © 2011-2022 走看看