• C语言编程练习21:找规律填数字


    题目描述

    小宇正在读小学,今天老师布置了几道数学题目。小宇平时上课经常不专心,这些他可发愁了,怎么办呢?看看你能不能帮帮他。
    题目是给你一组有规律序列的前面5个整数,请你给出它后面跟着的5个整数,如:1,2,3,4,5,___,___,___,__,___。这是个等差数列,后面应该是6,7,8,9,10,就这么简单。而且现在小宇已经知道这串序列要么是等差数列,要么是等比数列或者是斐波那契数列。

    输入

    输入包含多组测试数据。每组输入5个整数,每个数字之间隔一个空格,当5个数字都为0时输入结束。

    输出

    对于每组输入,输出这串数列的后面5个数字,每个数字之间隔一个空格。

    样例输入 Copy

    1 2 3 4 5
    1 2 4 8 16
    1 2 3 5 8
    0 0 0 0 0

    样例输出 Copy

    6 7 8 9 10
    32 64 128 256 512
    13 21 34 55 89


    思路这道题看着简单,要AC却不容易,主要是要考虑全面,注意细节。
    #include <stdio.h>
    #include <iostream>
    #include <cstring>
    #include <algorithm>
    #include <cmath>
    
    
    int main()
    {
    	int a,b,c,d,e;
    	while(scanf("%d %d %d %d %d",&a,&b,&c,&d,&e)!=EOF)
    	{	
    		if(a==0&&b==0&&c==0&&d==0&&e==0)//全0退出
    		{
    			break;
    		}
    		if((b-a) == (c-b) && (d-c)==(c-b) &&(d-c)==(e-d))//判断是等差数列
    		{
    			int t = b - a;
    			for(int i = 1;i<=5;i++)
    			{
    				printf("%d ",e+i*t);
    			}
    			printf("
    ");
    		}
    		if((b/a) == (c/b)&&(c/b)==(d/c)&&(d/c)==(e/d)&&(b/a)!=1)//判断等比数列。把公比为1除去,当作等差数列
    		{
    			int t = b/a;
    			for(int i = 1;i<=5;i++)
    			{
    				printf("%d ",e*(int)pow(t,i));
    			}
    			printf("
    ");
    		}
    		if(a+b==c&&b+c==d&&c+d==e)//判断斐波那契数列
    		{
    			int t1=d,t2=e,s=0;
    			for(int i = 6;i<11;i++)
    			{
    				s=t1+t2;
    				t1=t2;
    				t2=s;
    				printf("%d ",s);
    			}
    			printf("
    ");
    		}
    	}
        return 0;
    }
    
  • 相关阅读:
    在CHROME里安装 VIMIUM 插件, 方便操作
    Python 判断变量的类型
    Python 格式化输出
    ssh 使用
    [转载] 构造linux 系统下免密码ssh登陆  _How to establish password-less login with SSH
    [转载] SSH入门学习基础教程
    SSH 常用命令解析
    【转载】 调研文献的方法介绍,适用于各个领域
    POJ 2549 Sumsets
    HDU 5858 Hard problem
  • 原文地址:https://www.cnblogs.com/FantasticDoubleFish/p/14317785.html
Copyright © 2020-2023  润新知