摘要: 看了这个题好久还是不知道怎么做,后来经过lvsi的指导,才把它给A了。m=n^n;两边同取对数,得到,log10(m)=n*log10(n);再得到,m=10^(n*log10(n));然后,对于10的整数次幂,第一位是1,所以,第一位数取决于n*log10(n)的小数部分;我们知道一个数x可以用10^(n +m)( n可以是小数,m是整数 )表示,那么10^n就是表示x/10^m之后的数及前面的数值。#include<stdio.h>#include<stdlib.h>#include<math.h>int main(){ int T; double N; 阅读全文
posted @ 2011-08-19 18:23 wutaoKeen 阅读(151) 评论(0) 推荐(0) 编辑
摘要: 该题就从最高位取余,余数再乘以10就可以了;#include<stdio.h>#include<stdlib.h>#include<string.h>int main(){ int n,m; char num[1024]; while( scanf( "%s%d",num,&m )!=EOF ) { int len=strlen( num ); int n=num[0]-'0',i=1; while( i<len ) { n=n*10+num[i]-'0'; n%=m; i++; } prin 阅读全文
posted @ 2011-08-19 17:20 wutaoKeen 阅读(150) 评论(0) 推荐(0) 编辑
摘要: 该题是一道中国剩余定理题目,刚开始我就用了一下暴力的方法 (同时也优化了一下)一下子就超时了,后来看了一下这个题的解题报告才知道要用中国剩余定理,这也是我第一次用中国剩余定理解题。这个定理又叫孙子定理。就是给定几个数 虽然不互质 然后一个数取余他们又有相应的余数。那么这个问题的答案相差的一定是这些数的最小公倍数。首先我们求出最小公倍数K;然后在N%k+1到N%k+k这个范围内暴找一下有没有一个符合所有条件的数,我们把N分成一段段的,因为在每一段一定是没有或者只有一个的。为什么可以分成一段段的,我们知道中国剩余定理求的是最小的数,那么它的倍数同样是符合条件的;所以如果有的话 sum+=n/k;不 阅读全文
posted @ 2011-08-19 16:39 wutaoKeen 阅读(1184) 评论(0) 推荐(0) 编辑