蓝桥杯---Sin之舞---C语言

1 篇文章 0 订阅
1 篇文章 0 订阅

蓝桥杯---------Sin之舞---------C语言

原题链接
在这里插入图片描述
1,读完这道题首先出现的想法是找规律。接下来开始找规律。
2,首先求An,如果单单求An的话,我们可以把An分成两个部分,“sin(i”和“+或-”号,例如:sin(1,sin(2,sin(3中间要么是**+要么是-,这样我们用一个循环语句和一个if语句,便可以大致实现An,另外要注意右括号**的数量。从输入样例可以看出,A1=sin(1),A2=sin(1-sin(2)),A3=sin(1-sin(2+sin(3))),n为几右括号的数量就为几。求An的代码块如下:

void s1(int n)
{
	int i;
	for(i=1;i<=n;i++){
		printf("sin(%d",i);
		if(i==n)//如果i=n说明,到最后了,后边不需要带加号或者减号了
			continue;
		if(i%2==0)
			printf("+");
		else printf("-");
	}
	while(n--)//输出右括号
			printf(")");
}

3,接着就是找Sn的规律,大体上Sn也是由两部分组成,Ai+n)一些括号,右样例可以看出,最后没有右括号,且左括号的数量为n-1个,i从1递增,n递减。求Sn的代码块如下;

void s2(int m,int n){
	s1(m);//调用Ai
	printf("+%d",n);
	if(n!=1)
		printf(")");
}
int main(){
	int n,i;
	scanf("%d",&n);
	for(i=1;i<=n-1;i++)//单独处理输出左括号n-i个
		printf("(");
	for(i=1;i<=n;i++)
		s2(i,n+1-i);//实现i递加,n递减,求Sn
	return 0;
}

代码实现如下:

#include <stdio.h>
#include <stdlib.h>
void s1(int n)
{
	int i;
	for(i=1;i<=n;i++){
		printf("sin(%d",i);
		if(i==n)//如果i=n说明,到最后了,后边不需要带加号或者减号了
			continue;
		if(i%2==0)
			printf("+");
		else printf("-");
	}
	while(n--)//输出右括号
			printf(")");
}
void s2(int m,int n){
	s1(m);//调用Ai
	printf("+%d",n);
	if(n!=1)
		printf(")");
}
int main(){
	int n,i;
	scanf("%d",&n);
	for(i=1;i<=n-1;i++)//单独处理输出左括号n-i个
		printf("(");
	for(i=1;i<=n;i++)
		s2(i,n+1-i);//实现i递加,n递减
	return 0;
}
  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值