题目描述
现给你一个正整数N,请问N^N的最左边的数字是什么?
输入
输入包含多组测试数据。每组输入一个正整数N(N<=1000000)。
输出
对于每组输入,输出N^N的最左边的数字。
样例输入
3
4
样例输出
2 2
题意描述:
输入一个正整数N(N<=1000000)
输出N^N的最左边的数字
解题思路:
for循环控制与N相乘N次
每次相乘后看当前结果是否大于10,若大于等于10循环除以10直到小于10(即为个位数)
for循环结束后输出结果即可
代码:
1 #include<stdio.h> 2 int main() 3 { 4 double r; 5 int i,n; 6 while(scanf("%d",&n) != EOF) 7 { 8 r=1; 9 for(i=1;i<=n;i++) 10 { 11 r *= n; 12 //printf("%lf ",r); 13 while(r>=10) 14 { 15 r /= 10; 16 //printf("%lf ",r); 17 } 18 } 19 printf("%d ",(int)r); 20 } 21 return 0; 22 }
测试样例:
5
6
1
0
样例输出:
3
4
1
1
易错分析:
1、此题容易当成大整数运算求解,细想直接求出结果会很麻烦,只要最高位则用浮点数近似运算即可(比赛时克服畏难情绪)