Skip to main content
  1. Posts/

uva 10916 Factstone Benchmark

·1 min
Note: This article is available in Chinese only. 本文暂无英文版本。 View original

https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid;=8&page;=show_problem&problem;=1857 题意:计算最大的n,满足n!/* *********************************************** Author :111qqz Created Time :2016年01月29日 星期五 19时49分25秒 File Name :code/uva/10916.cpp ************************************************ */

#include #include #include #include #include #include #include #include #include #include #include #include #define fst first #define sec second #define lson l,m,rt«1 #define rson m+1,r,rt«1|1 #define ms(a,x) memset(a,x,sizeof(a)) typedef long long LL; #define pi pair < int ,int > #define MP make_pair

using namespace std; const double eps = 1E-8; const int dx4[4]={1,0,0,-1}; const int dy4[4]={0,-1,1,0}; const int inf = 0x3f3f3f3f; const int N=150; int n; int f[N]; void pre() {

1f[0] = 3;
2int per = 2;
3for ( int i = 1 ; i <=25 ; i++)
4{
5f[i]=f[i-1]+per;
6per++;
7}

} int main() { #ifndef ONLINE_JUDGE freopen(“code/in.txt”,“r”,stdin); #endif

while (scanf("%d",&n)!=EOF)  // (1*2*3*...*n)>2^k,巧妙利用对数求解。两边取对数即可。
{
    if (n==0) break;
    int k = (n-1960)/10;
    int p = 1<<(k+2);
   // cout<<"k:"<<k<<endl;
   // cout<<"p:"<<p<<endl;
    double dp = p*1.0*log(2); //因为不等式左边每一个都有一个log(2)(计算对数的时候用换底公式产生的),可以乘到不等号右边。
    double sum = 0 ;

    for ( int i = 1; ; i++)
    {
	sum +=log(i);
	//cout<<"i:"<<i<<" sum:"<<sum<<endl;
	if (sum>dp)
	{
	    printf("%d\n",i-1);
	    break;
	}
    }

}

#ifndef ONLINE_JUDGE fclose(stdin); #endif return 0; }

Related

uva 107 The Cat in the Hat

·1 min
https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=43 题意:其实就是给了两个式子。。。(N+1)^h=a,N^h=b,a,b已知,然后求关于N的两个式子.。。 思路:数学上这个方程貌似不可解。。? 所以只能枚举一下==。。。注意精度问题把。。。

uva 846 Steps

·2 mins
https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid;=8&page;=show_problem&problem;=787 题意:从x增加到y,第一步和最后一步步长只能是1,其他步一定可以是上一步减一,和上一步相等,或者上一步步长加一,三种情况,且步长恒为正。问从x到y最少需要的步数。

uva 10025 The ? 1 ? 2 ? ... ? n = k problem

·1 min
https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=966 题意:?1?2?3?4…?n=k,把每个?替换成+或者-,找到最小的n使得式子成立。 题意:这道题最关键的一点是。如果s1=1+2+3+.,x+..+n>=k (所有数取正数),那么一定有s2=1+2+3+..-x+..+n=k

uva 113 Power of Cryptography

·1 min
https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid;=8&page;=show_problem&problem;=49 题意:求p开n次方。保证结果为整数。 思路:p最大10的101次方。。。double最大10的308次方。。因为肯定是整数。。不存在精度问题。。所以可以用douible水过QAQ…

hdoj 5605 || bc #68 div 2 1001 geometry

·1 min
题意:geometry Accepts: 324 Submissions: 622 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) 问题描述 在平面直角坐标系上有一个点PP, 他的坐标是(x, y)(x,y). 有一条直线y = kx + by=kx+b经过了PP, 且分别交x, yx,y正半轴于A, BA,B. 求|PA| * |PB|∣PA∣∗∣PB∣的最小值. 输入描述 第一行一个TT, 表示数据组数. 接下来TT行每行两个正整数x,yx,y, 表示PP的坐标.