N的N次方

题目描述

现给你一个正整数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\n",r);
13             while(r>=10)
14             {
15                 r /= 10;
16                 //printf("%lf\n",r);
17             }
18         }
19         printf("%d\n",(int)r);
20     }
21     return 0;
22  } 

测试样例:

5

6

1

0

样例输出:

3

4

1

1

易错分析:

1、此题容易当成大整数运算求解,细想直接求出结果会很麻烦,只要最高位则用浮点数近似运算即可(比赛时克服畏难情绪)

posted @ 2017-07-22 16:17  Reqaw  阅读(742)  评论(0编辑  收藏  举报