POJ1001
来源:互联网 发布:mac最好的视频播放器 编辑:程序博客网 时间:2024/06/02 21:20
#include <iostream>
using namespace std;
void chenab(char* a, long b)
{
char len = (char)strlen(a);
long tmpRet = 0;
long carrayNum = 0;
char i = 0;
for (i = 0; i < len; ++i)
{
tmpRet = (a[i] - '0') * b + carrayNum;
carrayNum = tmpRet / 10;
a[i] = tmpRet % 10 + '0';
}
while (carrayNum) {
a[i++] = carrayNum%10 + '0';
carrayNum/=10;
}
a[i] = 0;
}
void rever(char* a)
{
char len = (char)strlen(a) - 1;
for (char i = 0; i <(len + 1)/2; ++i)
{
a[i] ^= a[len - i];
a[len - i] ^= a[i];
a[i] ^= a[len - i];
}
}
void printLargetNum(char* a, char pointBit)
{
char len = (char)strlen(a);
for (char i = len - 1; i >= 0; --i) {
cout << a[i];
}
cout << endl;
}
long charArry2Long(char *a)
{
char len = (char)strlen(a);
long ret = 0;
for(char i = 0; i < len; ++i)
{
ret = ret * 10 + a[i] - '0';
}
return ret;
}
char formatBeforeRever(char* a, bool removePoint = true)
{
char len = (char)strlen(a);
bool cutting = true;
char cutBit = 0;
for(char i = len - 1; i >= 0; --i)
{
if (cutting and a[i] != '0')
{
cutBit = i + 1;
cutting = false;
}
if (a[i] == '.') {
if (i + 1 == cutBit) {
cutBit = i;
a[cutBit] = 0;
}
else if (removePoint)
{
memmove(a+i, a + i + 1, strlen(a + i + 1) + 1);
a[cutBit-1] = 0;
}
char ret = cutBit - 1 - i;
return ret < 0?0:ret;
}
}
return 0;
}
void printLargeNum(char* retArray, char pointbit)
{
if (pointbit != 0) {
memmove(retArray+pointbit + 1, retArray+pointbit, strlen(retArray+pointbit) + 1);
retArray[pointbit] = '.';
}
rever(retArray);
formatBeforeRever(retArray, false);
if (pointbit > strlen(retArray)) {
cout << '.';
for (char i = pointbit - strlen(retArray); i; --i) {
cout << '0';
}
}
cout << retArray << endl;
}
void test1001()
{
int n; char a[126];
char pointBit = 0;
long b = 0;
while (cin >> a >> n) {
if (not n) {
cout << 1 << endl;
continue;
}
pointBit = formatBeforeRever(a);
b = charArry2Long(a);
rever(a);
for (char i = 1; i < n; ++i)
{
chenab(a, b);
}
printLargeNum(a, n * pointBit);
}
}
int main() {
test1001();
return 0;
}
- POJ1001
- poj1001
- poj1001
- POJ1001
- POJ1001
- poj1001
- POJ1001
- poj1001
- POJ1001
- POJ1001
- poj1001
- POJ1001
- POJ1001
- poj1001
- POJ1001
- POJ1001
- POJ1001
- poj1001
- DB2基础知识学习
- Linux awk 命令
- 算法——算法分析
- 安卓高手之路之 ClassLoader
- 斐波拉契数列的三种解法
- POJ1001
- 安卓高手之路之ClassLoader(二)
- 字符串指针及句子逆序
- 安卓高手之路之ClassLoader(三)
- FTRL 算法
- 利用射线进行碰撞检测做射击效果
- 安卓高手之路之ClassLoader(四)
- 视觉里程计 特征点法
- OpenCV的鼠标操作——用鼠标画矩形(代码解读)