紫书 习题 10-14 UVa 10886(暴力+数据范围)

开始的时候一看这题感觉很难,觉得肯定有什么很快的办法

不能暴力做(受了上一题10-13的影响)

然后一看那个函数感觉无从下手。

然后看了博客发现,原来这道题就是直接暴力……

因为n的范围为10的7次方啊 ,不会超时

自己以后要注意数据范围

#include<cstdio>
#include<cmath>
#include<iostream>
#define REP(i, a, b) for(int i = (a); i < (b); i++)
using namespace std;

unsigned long long seed;
long double gen()
{
	static const long double Z = ( long double )1.0 / (1LL<<32);
	seed >>= 16;
	seed &= ( 1ULL << 32 ) - 1;
	seed *= seed;
	return seed * Z;
}

const int MAXN = 11234567;
long double num[MAXN];

int main()
{
	int n, T;
	scanf("%d", &T);
	
	REP(kase, 1, T + 1)
	{
		scanf("%d%llu", &n, &seed);
		long double sum = 0, ans = 0;
		REP(i, 0, n)
		{
			num[i] = gen();
			sum += num[i];
		}
		
		sum /= n;
		REP(i, 0, n) ans += pow(sum - num[i], 2);
		printf("Case #%d: %.5Lf\n", kase, sqrt(ans / n));	
	}
	
	return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_34416123/article/details/81184333