1、立方根的逼近迭代方程是 y(n+1) = y(n)*2/3 + x/(3*y(n)*y(n)),其中y0=x.求给定的x经过n次迭代后立方根的值。
输入有多组数据。
每组一行,输入x n。
输出:
迭代n次后的立方根,double精度,保留小数点后面六位。
样例输入:
3000000 28
样例输出:
144.224957
#include "stdafx.h"
#include "math.h"
#include "stdio.h"
//using namespace std;
int main(int argc, char* argv[])
{
double x,n;
double result=0;
scanf("%lf %lf",&x,&n);
result=x;
while(n>0){
result=result*2/3+x/(3*result*result);
n--;
}
printf("%lf",result);
getchar();
return 0;
}
2、数组排序
输入一个数组的值,求出各个值从小到大排序后的次序。
输入:输入的第一个数为数组的长度,后面的数为数组中的值,以空格分割
输出:各输入的值按从小到大排列的次序。
sample
input:
4
-3 75 12 -3
output:
1 3 2 1
#include "stdafx.h"
#include "math.h"
#include "stdio.h"
#include "stdlib.h"
//using namespace std;
int main(int argc, char* argv[])
{
int n,m,*a,*b;
int i,j;
scanf("%d",&n);
a=(int*)malloc(sizeof(int)*n);
b=(int*)malloc(sizeof(int)*n);
for(i=0;i<n;i++){
scanf("%d",&a[i]);
b[i]=a[i];
}
int min;
for(i=1;i<n;i++){
min=i-1;
for(j=i;j<n;j++){
if(a[j]<a[min]) min=j;
}
int temp=a[i-1];
a[i-1]=a[min];
a[min]=temp;
}
m=n;
for(i=0;i<m-1;i++)
{
if(a[i]==a[i+1]){
for(j=i+1;j<m-1;j++)
a[j]=a[j+1];
m--;
i--;
}
}
for(i=0;i<m;i++)
printf("%d ",a[i]);
printf("\n");
for(i=0;i<n;i++){
for(j=0;j<m;j++){
if(b[i]==a[j]){
printf("%d ",j+1);
break;
}
}
}
free(a);
return 0;
}