给定两个正整数m和n(m<n),请你找出三个正整数a1、a2、a3,使得m,a1,a2,a3,n构成等差数列。若无法构成,请输出“No Solution”;若可以构成,则输出该等差数列,用一个空格分隔。
输入
两个整数m和n,用一个空格分隔
输出
输出“No Solution”或由m、a1、a2、a3、n构成的等差数列,用一个空格分隔
输入
4 8
输出
4 5 6 7 8
void func(int m, int n) { //默认mn正整数了哈
if m >= n {
cout << "No S..." << endl;
return;
}
int cha = n - m; //差值
if cha <= 0 || cha % 4 != 0 {
cout << "No S..." << endl;
return;
}
int tmp = cha / 4
cout << m << " " << m+tmp << " " << m+tmp*2 << " " << m+tmp*3 << n << endl;
}
随便写的,可以优化
代码如下:
可以参考一下
#include <stdio.h>
int main()
{
int a[3],i,m,n,d;
scanf("%d %d",&m,&n);
d=n-m-1;
if(d%3==0)
{
d/=3;
a[0]=m+d;
a[1]=a[0]+d;
a[2]=a[1]+d;
printf("%d %d %d %d %d\n",m,a[0],a[1],a[2],n);
}
else printf("No Solution\n");
return 0;
}
#include <stack>
#include <iostream>
#include <vector>
#include <algorithm>
#include <string>
#include <cstring>
#include <cmath>
#include <cstdio>
//#define rep1(i, a, n) for (int i = a; i <= n; i++)
//#define rep2(i, a, n) for (int i = a; i >= n; i--)
//#define mm(a, b) memset(a, b, sizeof(a))
//#define elif else if
typedef long long ll;
const int INF = 0x7FFFFFFF;
using namespace std;
int main()
{
int m, n;
scanf("%d%d", &m, &n);
if((n-m)%4!=0)
{
printf("No Solution");
return 0;
}
printf("%d", m);
for (int i = 1; i <= 4;i++)
{
printf(" %d",m + (n - m) / 4 * i);
}
return 0;
}