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

解题思路:

这道题提供两个思路:

    1. 利用 Continue 语句,及时跳出不符合条件的情况

      利用了 continue 语句,从而使得进入 for 循环经条件判断后直接跳出来进行下一次循环。

    2. 更简化的算法

      比起上面的算法,更具技巧性。上面的算法按照一般的逻辑去实现,而此算法更好地利用了 for 循环的特性。

      #include <stdio.h>
      int main()
      {
          int start;
          scanf("%d", &start);
          int end;
          int n = 0;
          end = start + 4;
          for(int i = start; i<end; i++)
          {
                  for(int j = start; j<end; j++)
                  {
                          if(i == j) continue;
                          for(int k = start; k<end; k++)
                          {
                               if(k == j) continue;
                               if(k == i) continue;
                               n++;
                               if(n%6)
                               {
                                   printf("%d ", i*100+j*10+k);
                               }else
                               {
                                   printf("%d\n", i*100+j*10+k);
                               }
                          }
                  }
          }
      }  
      #include<stdio.h> // 第二种算法
      
      int main()
      {
          int a,x,y,z;
          scanf("%d", &a);
          int count = 0;
      
          for (x=a;x<a+4;x++){
              for (y=a;y<a+4;y++){
                  for (z=a;z<a+4;z++){
                      if (x!=y && x!=z && y!=z) {
                              printf("%d%d%d", x, y, z);
                              count++;
                              if ( count%6==0 ) {
                                  printf("\n");
                              } else {
                                  printf(" ");
                              }
                      }
      
                  }
              }
          }
          return 0;
      }
时间: 2024-10-05 03:04:42

7-16 求符合给定条件的整数集(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

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

循环-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

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

求符合给定条件的整数集

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;

1006 换个格式输出整数 (15 分)

第一个方法: #include <iostream> #include <string> using namespace std; int main(){ int n, h, t, o; cin >> n; h = n / 100; // 对于每位数的求解不能出错 t = n / 10 % 10; o = n % 100 % 10; if (h != 0){ // 要使用连续的是那个if,而不是 else if for (int i = 0; i < h; i++

7-49 求前n项的阶乘之和 (15 分)

从键盘输入一个整数n,求前n项的阶乘之和,1+2!+3!+...+n!的和 输入格式: 输入一个大于1的整数.例如:输入20. 输出格式: 输出一个整数.例如:2561327494111820313. 输入样例: 在这里给出一组输入.例如: 20 输出样例: 在这里给出相应的输出.例如: 2561327494111820313 def f(n): ans = 1 for i in range(1,n+1): ans *= i return ans n = int(input()) sum = 0

PAT B11006 换个格式输出整数 (15 分)

让我们用字母 B 来表示"百".字母 S 表示"十",用 12...n 来表示不为零的个位数字 n(<),换个格式来输出任一个不超过 3 位的正整数.例如 234 应该被输出为 BBSSS1234,因为它有 2 个"百".3 个"十".以及个位的 4. 输入格式: 每个测试输入包含 1 个测试用例,给出正整数 n(<). 输出格式: 每个测试用例的输出占一行,用规定的格式输出 n. 输入样例 1: 234 输出样例

习题2-5 求平方根序列前N项和 (15分)

本题要求编写程序,计算平方根序列?的前N项之和.可包含头文件math.h,并调用sqrt函数求平方根. 输入格式: 输入在一行中给出一个正整数N. 输出格式: 在一行中按照“sum = S”的格式输出部分和的值S,精确到小数点后两位.题目保证计算结果不超过双精度范围. 输入样例: 10 输出样例: sum = 22.47 #include<stdio.h> #include<math.h> int main(void){ int n,i; double Sum; scanf(&qu