1056 - sqrt log sin 函数

通过次数

0

提交次数

0

时间限制 : 1 秒 内存限制 : 32 MB

小明的老师给小明布置了这样一道作业题,一个序列符合以下定义:

现问你这个序列的第n项是多少?

题目输入

输入包含多组测试数据。每组输入一个整数n(0<=n<=1000000),当输入-1时,输入结束。

题目输出

对于每组输入,输出第n项的值,结果请mod 1000000。

输入/输出样例

输入格式

0
-1

输出格式

1

C语言解答

#include<stdio.h>
#include<math.h>

int a[1000001];

int main()
{
	int n;
	double i,x,y,z;
	a[0]=1;
	for(i=1;i<=1000000;i++)
	{
		x=i-sqrt(i);
		y=log(i);
		z=i*sin(i)*sin(i);
		a[(int)i]=(a[(int)x]+a[(int)y]+a[(int)z])%1000000;
	}
	while(scanf("%d",&n)!=EOF,n!=-1)
		printf("%d\n",a[n]);
	return 0;
}

C++解答

#include<stdio.h>
#include<math.h>

int a[1000001];

int main()
{
	int n;
	double i,x,y,z;
	a[0]=1;
	for(i=1;i<=1000000;i++)
	{
		x=i-sqrt(i);
		y=log(i);
		z=i*sin(i)*sin(i);
		a[(int)i]=(a[(int)x]+a[(int)y]+a[(int)z])%1000000;
	}
	while(scanf("%d",&n)!=EOF,n!=-1)
		printf("%d\n",a[n]);
	return 0;
}

Java解答

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        while(in.hasNextInt()) {
            int N = in.nextInt();
            if(N == -1)
            break;
            int[] x = new int[N+1];
            x[0] = 1;
            double a1,b1,c1;
            int a2,b2,c2;
            for(int i = 1;i<=N;i++) {
                a1 = Math.sqrt(i);
                b1 = Math.log(i);
                c1 = Math.pow(Math.sin(i),2);
                a2 = (int)Math.floor(i-a1);
                b2 = (int)Math.floor(b1);
                c2 = (int)Math.floor(i * c1);
                x[i] = (x[a2] + x[b2] + x[c2]) % 1000000;
            }
            System.out.println(x[N]);
        }
    }
}