c语言算n^n,1<=N<=1,000,000,000,输出个位数 给你一个数n(0 < n < 1,000,000 ) ,n遵...

\u600e\u4e48\u7528C\u8bed\u8a00\u628an\uff081<=n<=6\uff09\u4f4d\u6570\u90fd\u8f93\u51fa\u6765\uff1f

c\u8bed\u8a00\u7b97n^n\uff0c1<=N<=1,000,000,000
\u4ee3\u7801\u5982\u4e0b\uff1a
#include#includeint main(){int i,n,flag,temp,sum=0,num=0;printf("\u8bf7\u8f93\u5165\u6240\u8981\u6c42\u7684\u6c34\u4ed9\u82b1\u6570\u4f4d\u6570(16){printf("\u4f4d\u6570\u4e0d\u6b63\u786e\uff01\u8bf7\u91cd\u65b0\u8f93\u5165(1<=n<=6):\n");scanf("%d",&n);}flag=pow(10,n);for(i=flag/10;i<flag;i++) //\u4ece10\u7684n-1\u6b21\u65b9\u523010\u7684n\u6b21\u65b9\u91cc\u627en\u4f4d\u7684\u6c34\u4ed9\u82b1\u6570{sum=0; //\u8ba1\u6570\u6e05\u96f6temp=i; //\u4e34\u65f6\u6570\uff0c\u7528\u6765\u66ff\u4ee3i\u8fdb\u884c\u8ba1\u7b97while(temp!=0) //\u5f53\u4e34\u65f6\u6570\u6ca1\u53d8\u62100\u65f6\u6267\u884c\u5faa\u73af{sum+=pow((temp%10),n); //\u53d6\u4e2a\u4f4d\u7684\u6570\u8fdb\u884cn\u6b21\u65b9\uff0c\u7d2f\u52a0\u8fdbsumtemp/=10; //\u53bb\u6389\u76ee\u524dtemp\u7684\u4e2a\u4f4d}if(sum==i) //\u5faa\u73af\u8fc7\u540e\uff0c\u7d2f\u52a0\u7684sum\u503c\u7b49\u4e8e\u539f\u503c\u7684\u8bdd\uff0c\u6ee1\u8db3\u6c34\u4ed9\u82b1\u6570\u6761\u4ef6\uff0c\u8f93\u51fa\u6570\u5b57\u3002{printf("%d\n",i);num++; //\u8ba1\u7b97\u5f53\u524d\u6c34\u4ed9\u82b1\u6570\u4e2a\u6570\u3002}}printf("%d\u4f4d\u6c34\u4ed9\u82b1\u6570\u6709%d\u4e2a\n",n,num);return 0;}

#include
int k=0; //\u5b9a\u4e49\u4e00\u4e2a\u5168\u5c40\u53d8\u91cf,\u7528\u505a\u8ba1\u7b97\u8f6c\u6362\u6b21\u6570
int Turn_to_one(int n)
{

printf("\u8f93\u5165\u6570\u636e n=%d,",n );
if (n==1) //\u8f6c\u6362\u7ed3\u675f
{
n=1;
return k;
}
else if (n%2==0)
{
k+=1;
n=n/2;
printf("\u5076\u6570,\u7ecf\u7b2c %d \u6b21\u8f6c\u6362\u540e\uff0cn=n/2=%d\n ",k,n );
}
else {
k+=1;
n=3*n+1;
printf("\u5947\u6570,\u7ecf\u7b2c %d \u6b21\u8f6c\u6362\u540e\uff0cn=3*n+1=%d\n ",k,n );
}

Turn_to_one(n); //n\u4e0d\u7b49\u4e8e1,\u7ee7\u7eed\u8f6c\u6362
}
int main()
{
int num,t=1;
while(true)
{
scanf("%d",&num);
if (num>0 || num <1000000) //\u5224\u65ad\u8f93\u5165\u6570\u636e\u662f\u5426\u7b26\u5408\u8981\u6c42,\u4e0d\u7b26,\u91cd\u8f93
break;
}
t=Turn_to_one(num);
printf("\u603b\u8f6c\u6362\u6b21\u6570\uff1a%d\n",t);
}

你这里求 n^n的个位数
我说说a^b的个位数算法吧(a=b时就是n^n)
首先:a^b的个位数 等于 a的个位数 的b次方 即等于(a%10)^b的个位数
现在的问题就是观察0到9的b次方的个位数规律了(a%10范围0到9)

0,1,5,6的b次方结果的个位还是0,1,5,6 ()
2的b次方结果的个位以 2,,4,8,6 循环 (b每增加4循环一次)
3的b次方结果的个位以3,9,7,1循环 (b每增加4循环一次)
4:以4,6循环 (b每增加2循环一次)
7: 7,9,3,1循环 (b每增加4循环一次)
8: 8,4,2,6循环 (b每增加4循环一次)
9: 9,1循环 (b每增加2循环一次)
所以,所有数字把b每增加4次看成一个回合,它是一个循环可以不管。
比如:
1的14次方,个位数 就是1^(14%4)=1^2=1的个位数1
3的9次方,个位数 就是 3^(9%4)=3^1=3的个位数3
4的11次方,个位数 就是4^(11%4)=4^3=64的个位数4
所以a^b的个位数与 (a%10)^(b%4)的个位是相同的
这里有个情况,当b%4=0时,其实他的个位数与 (a%10)^4的个位数相同而不是 (a%10)^0

这里x=(n-1)%4就是解决这种情况的
当n%4不等于0时
(n-1)%4 = n%4 -1
---------------------------------
x=(n-1)%4;
n=n%10;
for(j=0;j<=x;j++) //这里计算的就是 (a%10)^(b%4)的值了
{
k=k*n;
}
因为 j 从0开始,比如计算 4^6的值4096,这样就是
k=1;
for(j=0;j<=6-1;j++) //6要减1
{
k=k*4;
}
最后k=4096
所以上面用的x=(n-1)%4; 也就是x= n%4 -1,也就是 要减1
---------------------
当n%4等于0时
(n-1)%4=3
按上面说的,for循环计算的是 n%10 的4次方(j=0,1,2,3 乘了4次n%10)

结果也是对的

  • c璇█绠梟^n,1<=N<=1,000,000,000,杈撳嚭涓綅鏁
    绛旓細鏈鍚巏=4096 鎵浠ヤ笂闈㈢敤鐨剎=(n-1)%4; 涔熷氨鏄痻= n%4 -1锛屼篃灏辨槸 瑕佸噺1 --- 褰搉%4绛変簬0鏃 (n-1)%4=3 鎸変笂闈㈣鐨勶紝for寰幆璁$畻鐨勬槸 n%10 鐨4娆℃柟锛坖=0锛1锛2锛3 涔樹簡4娆%10锛夌粨鏋滀篃鏄鐨
  • c璇█濡備綍璁$畻n娆℃柟?
    绛旓細1銆C璇█涓绠椾竴涓暟鐨N娆℃柟鍙互鐢ㄥ簱鍑芥暟pow鏉ュ疄鐜帮紝杩樺彲浠ョ洿鎺ヤ娇鐢2^3灏卞彲浠ョ畻鍑虹粨鏋溿俻ow鍑芥暟鍘熷瀷锛歞ouble pow(double x,double y)銆傚叾涓瓁鍊兼槸搴曟暟锛寉鍊兼槸骞傘備妇渚嬶細double a=pow(3.14,2)璁$畻3.14鐨勫钩鏂广傛敞鎰忥細浣跨敤pow鍑芥暟鏃讹紝闇瑕佸皢澶存枃浠#include<math.h>鍖呭惈杩涙簮鏂囦欢涓2銆佸湪C璇█...
  • c璇█涓浣璁$畻涓涓暟鐨n娆℃柟?
    绛旓細C璇█涓绠涓涓暟鐨凬娆℃柟鍙互鐢ㄥ簱鍑芥暟pow鏉ュ疄鐜般傚嚱鏁板師鍨嬶細double pow(double x, double y)銆備唬鐮佸涓嬶細include <stdio.h> include <math.h> int main( ){ printf("%f",pow锛坸锛寉)锛夛紱return 0锛泒 娉細浣跨敤pow鍑芥暟鏃讹紝闇瑕佸皢澶存枃浠#include<math.h>鍖呭惈杩涙簮鏂囦欢涓傘...
  • 鍦C璇█涓庢牱琛ㄧず涓涓暟鐨 鈥n鈥 娆℃柟
    绛旓細C璇█涓璁$畻涓涓暟鐨凬娆℃柟鍙互鐢ㄥ簱鍑芥暟pow鏉ュ疄鐜般傚嚱鏁板師鍨嬶細double pow(double x, double y)銆備妇渚嬪涓嬶細double a = pow(3.14, 2); // 璁$畻3.14鐨勫钩鏂广傛敞锛氫娇鐢╬ow鍑芥暟鏃讹紝闇瑕佸皢澶存枃浠#include<math.h>鍖呭惈杩涙簮鏂囦欢涓
  • 濡備綍鐢c璇█璁$畻鏁板瓧鐨n娆℃柟
    绛旓細1 浣跨敤pow鍑芥暟銆傚湪C璇█鐨勬爣鍑嗗ご鏂囦欢math.h涓紝鏈夊簱鍑芥暟pow锛屽0鏄庝负 double pow(double x, double n);鍏跺姛鑳戒负璁$畻x鐨刵娆℃柟骞惰繑鍥炵粨鏋溿傛墍浠ュ彲浠ョ敤pow璁$畻x鐨刵娆℃柟銆傝鍑芥暟閫傜敤浜庝互涓嬪嚑绉嶆儏鍐碉細a. 褰搉涓烘诞鐐规暟绫诲瀷鏃讹紝蹇呴』浣跨敤pow銆俠. 褰搙涓烘诞鐐规暟鎴栧缁撴灉鍊肩簿搴﹁姹備笉楂樻椂锛屽彲浠ヤ娇鐢╬ow銆2 ...
  • c璇█缂栫▼涓浣曡緭鍏ュ箓娆℃柟
    绛旓細1銆佸ご鏂囦欢锛#include 2銆佸師鍨嬶細double pow(double x, double y);pow() 鍑芥暟鐢ㄦ潵姹 x 鐨 y 娆″箓锛堟鏂癸級pow()鐢ㄦ潵璁$畻浠 涓哄簳鐨 y 娆℃柟鍊硷紝鐒跺悗灏嗙粨鏋滆繑鍥炪傝杩斿洖鍊间负 ret锛屽垯 ret = xy銆3銆佷妇渚嬪涓嬶細double a = pow(4, 2); // 璁$畻4鐨勫钩鏂 4銆佸彲鑳藉鑷撮敊璇殑鎯呭喌锛氬鏋滃簳鏁 x...
  • C璇█涓寚鏁版庝箞琛ㄧず渚嬪(-1)鐨n娆℃柟鎬庝箞琛ㄧず
    绛旓細C璇█涓璁$畻涓涓暟鐨凬娆℃柟鍙互鐢ㄥ簱鍑芥暟pow鏉ュ疄鐜般傚嚱鏁板師鍨嬶細double pow(double x, double y)銆備妇渚嬪涓嬶細double a = pow(3.14, 2); // 璁$畻3.14鐨勫钩鏂广傛敞锛氫娇鐢╬ow鍑芥暟鏃讹紝闇瑕佸皢澶存枃浠#include<math.h>鍖呭惈杩涙簮鏂囦欢涓
  • c璇█濡備綍姹備换鎰忎竴涓嚜鐒舵暟鐨n娆℃柟鏍?
    绛旓細浜叉祴鍙敤 long jiecheng(int x){ long int i,k=1;for(i=1;i<=x;i++)k=k*i;return k;} int main(){ long int j,k=0;int i;for(i=1;i<=20;i++){ j=jiecheng(i);k+=j;} printf("%ld\n",k);} 杈撳嚭鐨勭粨鏋滄槸2561327494111820313 ...
  • C璇█ 璁$畻1鍒N涓暟瀛1鍑虹幇鐨勪釜鏁
    绛旓細绠楁硶鍒嗘瀽锛1. 瀹氫箟N 鍙婄敤鏉ョ粺璁$殑cnt锛 鐢ㄦ潵寰幆鐨刵锛2. 杈撳叆N 锛3. 灏唍浠1鍒癗寰幆锛 瀵逛簬姣忎釜n鎵ц濡備笅鎿嶄綔锛歛) 寰幆鍙栧嚭n鐨勬瘡浣嶆暟瀛楀 b)鍒ゆ柇璇ヤ綅鏄惁涓1锛 濡傛槸鍒欑疮鍔犲埌cnt涓娿4. 杈撳嚭缁撴灉銆備唬鐮佸涓嬶細include <stdio.h>int main(){int n, N, cnt = 0;scanf("%d",&N);//...
  • 杈撳嚭1~n鐨勫钩鏂,绔嬫柟鐨c璇█绋嬪簭
    绛旓細int main(){ int i,n;long a=0,b=0;printf("杈撳叆n\n");scanf ("%d",&n);for (i=1;i<=n;i++){ a=i*i;printf ("%d*%d=%ld\n",i,i,a);} for (i=1;i<=n;i++){ b=i*i*i;printf ("%d*%d*%d=%ld\n",i,i,i,b);} return 0;} 娉ㄦ剰鏁版嵁绫诲瀷锛屽綋蹇冩孩鍑簙...
  • 扩展阅读:c++编程 ... c++中<< ... c++和python先学哪个 ... 1加到n分之一的公式 ... c1 ... c#结构体 ... c#主要做什么 ... 男士高音c5是多高 ... c#和java哪个前景好 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网