找规律模拟器(1)

点击查看代码
#include<bits/stdc++.h>
#include<windows.h>
#define pt puts("")
#define swp if(a>b)swap(a,b)
#define cl system("cls")
using namespace std;

typedef unsigned long long ull;

ull Q1(ull x)
{
	return (x+1)*x/2;
}

ull Q2(ull x)
{
	return (x+2)*(x+1)*x/6;
}

ull Q4_(ull a)
{
	ull sum=0;
	for(unsigned i=1;i<a;++i)
	{
		sum+=Q1(i);
	}
	return sum;
}

void work()
{
	int Q;
	printf("cin>>Operator: ");
	scanf("%d",&Q);
	pt;
	printf("Operator=%d\n",Q);
	if(Q==0)
	{
		int x;
		printf("cin>>x: ");
		scanf("%d",&x);
		printf("ans=%d\n",x);
	}
	if(Q==1)
	{
		int x;
		printf("cin>>x: ");
		scanf("%d",&x);
		printf("ans=%lld\n",Q1(x));
	}
	if(Q==2)
	{
		int x;
		printf("cin>>x: ");
		scanf("%d",&x);
		printf("ans=%lld\n",Q2(x));
	}
	if(Q==3)
	{
		int a,b;
		printf("cin>>a>>b: ");
		scanf("%d%d",&a,&b);
		swp;
		printf("ans=%lld\n",Q1(b)-Q1(a));
	}
	if(Q==4)
	{
		int a,b;
		printf("cin>>a>>b: ");
		scanf("%d%d",&a,&b);
		swp;
		printf("ans=%lld\n",Q2(b)-(b-a+1)*Q1(a-1)-Q4_(a));
	}
	system("pause");
	cl;
}

int main()
{
	puts("使用说明:");
	puts("每次输入一个数为操作序号");
	puts("操作1:输入x,求 1+2+3+4+...+x 的值");
	puts("操作2:输入x,求 1+(1+2)+(1+2+3)+...(1+2+3+...+x) 的值");
	puts("操作3:输入a,b,求 a+(a+1)+(a+2)+(a+3)+...+(b-1)+b 的值");
	puts("操作4:输入a,b,求 a+(a+(a+1))+(a+(a+1)+(a+2))+...+(a+(a+1)+(a+2)+...+(b-1)+b) 的值");
	puts("Understand?");
	pt;
	puts("YES   O		NO   X");
	char c;
	cin>>c;
	if(c=='X') 
	{
		cl;
		puts("对于操作4");
		puts("例:输入 2,5");
		puts("得到的结果是:2+2+3+2+3+4+2+3+4+5 =30");
		puts("Understand?");
		pt;
		puts("YES   O		NO   X");
		char cc;
		cin>>cc;
		if(cc=='X') return 0;
		else cl;
	}
	else cl;
	while(1==1) work();
}

posted @ 2024-06-03 12:16  Miqa  阅读(28)  评论(0编辑  收藏  举报