生活随笔
收集整理的這篇文章主要介紹了
快速幂!!
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
zcmu:
1605: 大一下之小試身手
Time Limit: 1 Sec Memory Limit: 128 MB
[Submit][Status][Web Board]
Description
在浙江中醫(yī)藥大學(xué)的半年學(xué)習(xí),你看起來(lái)帥了很多,這個(gè)時(shí)候你已經(jīng)看不上A+B了,現(xiàn)在你喜歡用你的代碼去模擬你看到一切的事物。有一天你發(fā)現(xiàn)了一門神奇的語(yǔ)言那就是python,比如print “xxxx”*100,就可以把”xxxx”連續(xù)輸出一百遍… 這個(gè)時(shí)候你表示不服,我的C語(yǔ)言也可以,不就是多寫一個(gè)循環(huán)而已么。不開(kāi)心的你于是決定用C模擬Python解釋器,考慮到… 其實(shí)也沒(méi)啥,現(xiàn)在我告訴你Python的一些常用的運(yùn)算符號(hào)和規(guī)則,你來(lái)做個(gè)解釋器,恩,就這樣。
在Python里 “*”,”+”,”/”, ”-”,”%” 和C語(yǔ)言一樣
“”表示冪運(yùn)算,比如23==8
給你的語(yǔ)句如下:
Print string * num(string表示一個(gè)字符串,num表示一個(gè)數(shù))
Print a operator b ( 輸出a ,b經(jīng)過(guò)operator運(yùn)算的結(jié)果)
Input
只有上述兩種輸入(數(shù)據(jù)在Long long 內(nèi))
Output
輸出正確的答案
Sample Input
print 54*1
print “Tomcat”*2
Sample Output
54
TomcatTomcat
HINT
Source
/這題對(duì)于冪運(yùn)算如果用math里的自帶的pow,wrong的會(huì)不想說(shuō)話!!
(比如2*-3,用math里的pow答案會(huì)是0,但是實(shí)際AC的是不輸出,而且不知道為什么也輸不了下一組了)
寫這題學(xué)到了快速冪,我也不虧,雖然wrong到我心碎
*/
AC_code:
#include <stdio.h>
#include <string.h>
#define ll long long
char a[10000],b[10000];
ll Pow(ll a,ll b)//快速冪
{ll ans=1;while(b){if(b&1)ans*=a;a*=a;b>>=1;}return ans;
}
int main()
{while(gets(a)){int len_a= strlen(a),l = 0,i = 6;if(a[i]=='"'){memset(b,'\0',sizeof(b));if(a[i]=='"'){i++;while(a[i]!='"'){b[l++]=a[i];i++;}}i += 2;int num = 0;for(; i < len_a; i++)num = num*10 + (a[i]-'0');while(num--){printf("%s",b);}printf("\n");}else{long long ans,num1=0,num2=0;int n = 1,flag = 0;if(a[i]=='-'){n = -1;i++;}while(a[i]>='0'&&a[i]<='9'){num1 = num1*10 + (a[i]-'0');i++;}num1 *= n;n = 1;char m = a[i];if(a[i+1]=='*'){i++;flag = 1;}i++;if(a[i]=='-'){n = -1;i++;}while(a[i]>='0'&&a[i]<='9'){num2 = num2*10 + (a[i]-'0');i++;if(i >=len_a) break;}num2 *= n;if(flag)ans = Pow(num1,num2);else{switch(m){case '+':ans = num1 + num2;break;case '-':ans = num1 - num2;break;case '*':ans = num1 * num2;break;case '/':ans = num1 / num2;break;case '%':ans = num1 % num2;break;}}printf("%lld\n",ans);}
}
return 0;
}
與50位技術(shù)專家面對(duì)面20年技術(shù)見(jiàn)證,附贈(zèng)技術(shù)全景圖
總結(jié)
以上是生活随笔為你收集整理的快速幂!!的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。