9、Problem V数列a1求法
简要题意:
有如下方程:Ai = (Ai-1 + Ai+1)/2 - Ci (i = 1, 2, 3,…… n).
若给出A0, An+1, 和 C1, C2, .....Cn.请编程计算A1 = ?
解题思路:
找出a1与a0,an+1.以及ci(i = 1, ....n)的关系:
a1=n* a0+an+1+2[n*c1+(n-1)c2+……+2c n-1+Cn]/(n+1)利用关系式求出a1.
解题细节:
定义a0,an+1为double型;
定义数组C为double;
在最后输出a1后记得换行。
源码:
#include<iostream>
#include<cstdio>
#include<iomanip>
using namespace std;
int main()
{
int n;
double a0,an,a1,sum=0.0;
while(cin>>n)
{
double c[30001];
a1=0.0;
sum=0.0;
cin>>a0>>an;
for(int i=1;i<=n;i++)
{
cin>>c[i];
sum+=(n-i+1)*c[i];
}
a1=(n*a0+an-2*sum)*1.0/(n+1);
cout<<fixed<<setprecision(2)<<a1<<endl;
}
return 0;
}
10、Problem U手机短号
简要题意:
手机号是一个11位长的数字串,作为学生可以申请加入校园网,拥有一个短号。假设所有的短号都是是 6+手机号的后5位,比如号码为13512345678的手机,对应的短号就是645678。给你一个11位长的手机号码,找出对应的短号。
解题思路:
定义两个字符型数组,第一个数组有包含11个元素,第二个数组包含6个元素。现在给第二个数组的第一个元素赋值为6,第二个赋值为第一个数组的第七个元素,依次往后对应赋值。最后输出第二个数组。
解题细节:
在两个数组对应赋值时,注意算清第几个元素再开始赋值;
数组一定要定义为字符型。
源码:
#include<stdio.h>
#include<string.h>
int main()
{
int n;
char str1[12];
char str2[7];
scanf("%d",&n);
while(n--)
{
scanf("%s",&str1);
str2[0]='6';
str2[1]=str1[6];
str2[2]=str1[7];
str2[3]=str1[8];
str2[4]=str1[9];
str2[5]=str1[10];
printf("%s\n",str2);
}
return 0;
}