T^T(2)
解题思路:
这个题就是要求t的t次方,然后数出这个数一共有多少位。然后肯定不能求出这个具体的数,它会超出int的范围。
采取的方法:
[log10(n)] + 1 [] 表示取整。举个例子吧,比如 100: log10(100) = 2 取整以后就是2,然后加1,所以是3位。
(同时在运用上高中学的对数运算:log10(t^t)=log10t * log10t *…一共t个乘在一起… *log10t =t *log10t.)
#include<stdio.h> int main() { int a; long long b; while(scanf("%d",&a) != EOF) { b = a * log10(a); printf("%lld\n",b + 1); } return 0; }
PS:要用long long ,因为超出了int 的范围……输出时是"%lld\n".
火灾逃生(一维版)
解题思路:
该题通读下来,就是让求最慢的那个人逃生的时间,当两个人碰面的时候,可以理解为两个人擦身而过了。(毛大佬管这叫脑筋急转弯……)这样,那个最慢的人也就是,那个t=0时,离面向的那个出口最远的人,距离即为所求。
(PS:emmmmm,可以画画图理解一下这个过程!)
#include <stdio.h> int main(void){ int sum; int n,a,b,i,j; int m,q,f; scanf("%d",&n); for (i = 0; i < n; i++){ sum = 0; scanf("%d%d",&a,&b); for (j = 0; j < a; ++j){ f = 0; scanf("%d%d",&m,&q); if (q == 1) f = b-m; else f = m; if (sum<f) sum = f; else sum = sum; } printf("%d\n",sum); } return 0; }