04-0. 求符合给定条件的整数集(15)

给定不超过6的正整数A,考虑从A开始的连续4个数字。请输出所有由它们组成的无重复数字的3位数。

输入格式:

输入在一行中给出A。

输出格式:

输出满足条件的的3位数,要求从小到大,每行6个整数。整数间以空格分隔,但行末不能有多余空格。

输入样例:

2

输出样例:

234 235 243 245 253 254
324 325 342 345 352 354
423 425 432 435 452 453
523 524 532 534 542 543
 
方法1:
#include "stdio.h"
int main()
{
    int a,b,c,d,i,j;
    scanf("%d",&a);
    b=a+1;
    c=a+2;
    d=a+3;
    printf("%d%d%d %d%d%d %d%d%d %d%d%d %d%d%d %d%d%d\n",a,b,c,a,b,d,a,c,b,a,c,d,a,d,b,a,d,c);
    printf("%d%d%d %d%d%d %d%d%d %d%d%d %d%d%d %d%d%d\n",b,a,c,b,a,d,b,c,a,b,c,d,b,d,a,b,d,c);
    printf("%d%d%d %d%d%d %d%d%d %d%d%d %d%d%d %d%d%d\n",c,a,b,c,a,d,c,b,a,c,b,d,c,d,a,c,d,b);
    printf("%d%d%d %d%d%d %d%d%d %d%d%d %d%d%d %d%d%d\n",d,a,b,d,a,c,d,b,a,d,b,c,d,c,a,d,c,b);
    return 0;
}

注:这是最开始写的,也是比较傻的一个方法,用了穷举,虽然提交能通过,但不建议这样写

方法2:

#include "stdio.h"
int main()
{
    int A;
    scanf("%d",&A);
    int i=0,j=0,k=0;
    int cnt=0;
    for(i=A;i<A+4;i++)
    {
        for(j=A;j<A+4;j++)
        {
            if(i==j)
            continue;
            for(k=A;k<A+4;k++)
            {
                if(j==k||i==k)
                continue;
                printf("%d%d%d",i,j,k);
                cnt++;
                if(cnt%6==0)
                {
                    printf("\n");
                }
                else
                {
                    printf(" ");
                }
            }
        }
    }
    return 0;
}

注:这里用到了三层循环,注意点是i,j,k不能相同,方法是通过continue来跳过重复的情况,达到不重复的效果,另外,使用cnt计数来实现6个输出换一行

时间: 2024-12-21 07:24:51

04-0. 求符合给定条件的整数集(15)的相关文章

循环-03. 求符合给定条件的整数集(15)

给定不超过6的正整数A,考虑从A开始的连续4个数字.请输出所有由它们组成的无重复数字的3位数. 输入格式: 输入在一行中给出A. 输出格式: 输出满足条件的的3位数,要求从小到大,每行6个整数.整数间以空格分隔,但行末不能有多余空格. 输入样例: 2 输出样例: 234 235 243 245 253 254 324 325 342 345 352 354 423 425 432 435 452 453 523 524 532 534 542 543 #include<stdio.h> int

4-0. 求符合给定条件的整数集

给定不超过6的正整数A,考虑从A开始的连续4个数字.请输出所有由它们组成的无重复数字的3位数. 输入格式: 输入在一行中给出A. 输出格式: 输出满足条件的的3位数,要求从小到大,每行6个整数.整数间以空格分隔,但行末不能有多余空格. 输入样例: 2 输出样例: 234 235 243 245 253 254 324 325 342 345 352 354 423 425 432 435 452 453 523 524 532 534 542 543 [代码示例]: #include <stdi

循环-03. 求符合给定条件的整数集

1 /* 2 * Main.c 3 * c3-循环-03. 求符合给定条件的整数集 4 * Created on: 2014年7月23日 5 * Author: Boomkeeper 6 *****测试通过******* 7 */ 8 9 #include <stdio.h> 10 11 void cal(int input){ 12 int i,j,k; 13 int count=0; 14 15 for(i=input;i<=(input+3);i++){ 16 for(j=inpu

求符合给定条件的整数集

1 /* 2 求符合给定条件的整数集 3 */ 4 5 #include <stdio.h> 6 7 int main() 8 { 9 int n; 10 int cnt = 0; 11 int hundred, ten, unit; 12 13 scanf_s("%d", &n); 14 15 for (int i = 100; i < 1000; i++) 16 { 17 hundred = i / 100; 18 ten = i % 100 / 10;

7-16 求符合给定条件的整数集(15 分)

给定不超过6的正整数A,考虑从A开始的连续4个数字.请输出所有由它们组成的无重复数字的3位数. 输入格式: 输入在一行中给出A. 输出格式: 输出满足条件的的3位数,要求从小到大,每行6个整数.整数间以空格分隔,但行末不能有多余空格. 输入样例: 2 输出样例: 234 235 243 245 253 254 324 325 342 345 352 354 423 425 432 435 452 453 523 524 532 534 542 543 解题思路: 这道题提供两个思路: 利用 Co

第2章 数字之魅——找符合条件的整数

找符合条件的整数 问题描述 任意给定一个正整数N,求一个最小的正整数M(M>1),使得N*M的十进制表示形式里只含有1和0. 解决这个问题首先考虑对于任意的N,是否这样的M一定存在.可以证明,M是一定存在的,而且不唯一.简单证明:因为 这是一个无穷数列,但是数列中的每一项取值范围都在[0, N-1]之间.所以这个无穷数列中间必定存在循环节.即假设有s,t均是正整数,且s<t,有 .于是循环节长度为t-s.于是10^s = 10^t.因此有:,所以 例如,取N=3,因为10的任何非负次方模3都为

编程之美——符合条件的整数

问题:给定整数N,求最小整数M,使得N*M的十进制表示中只含有1和0: 当M很大时,机器可能不能表示M,对问题转化:求以最小整数X,使得X的十进制表示中只含1和0,并且被N整除: 此问题必定有解:可参考:http://blog.csdn.net/spaceyqy/article/details/38337387 代码实现(具体思路参考编程之美或:http://www.cnblogs.com/jfcspring/p/3776388.html): 1 #include<iostream> 2 #i

【编程之美】2.8 找符合条件的整数

给定一个正整数N,求一个最小的正整数M(M > 1),使得N * M的十进制表示中只有0和1. 我的思路: 从最低位到最高位找M,每次使得乘积的最后面多一位符合0.1的条件. 那么先找能够让末尾数字变成0的备选项 举例若N的个位数是9  考虑从后面来的进位 c 让 x * 9 + c 的末尾是0或1 设个位数字为9 则eligibleNum中存储的数字eligibleNum[0][0] = 0 因为9 * 0 + 0 = 0 末尾符合0或1 eligibleNum[0][0] = 9 因为9 *

一个自然数在1700和1800之间,且被5除余3,被7除余4,被11除余6,求符合条件的数

昨天晚上看了一道逻辑题:一个自然数在1700和1800之间,且被5除余3,被7除余4,被11除余6,求符合条件的数.题目后面写着,有人看了几分钟便给出了答案.我很好奇,此人是如何解答的. 我自己先琢磨了下,拿笔算了半天,最后一个巧合的情况下,得到了答案.此题的一个关键且明显的推论是:能被5除余3的数,肯定最后一位是3或者8.那么接下来怎么推呢?我从网上搜集了答案. 方案1: 这个数被5除余3,则此数个位数为3或8, 设这个数十位为x,则此数可表达为1703+10x,或1708+10x当此数为17