POJ 1001 Exponentiation (고정 밀 대수 곱셈)
2872 단어 알고리즘 문제
제목: 소수 R 의 N 차 멱 구하 기
사고: 결과 디지털 문자열 의 길 이 는 최대 5 * 25 이 고 대수 템 플 릿 을 사용 하 는 것 을 고려 합 니 다.먼저 소 수 를 정수 로 바 꾸 고 출력 할 때 소수점 자릿수 를 고려한다.
코드:
#include
#include
#include
#include
#include
#include
typedef long long LL;
using namespace std;
const int INF=INT_MAX;
const int MAXN=5005;
const int mod=1e9+7;
const int N = 1e4 + 10;
const double eps=1e-9;
int n;
char ans[6000000];
double m;
struct BigInt
{
const static int mod=10;
const static int mlen=1;
int a[600],len;
BigInt(int v=0)
{
memset(a,0,sizeof(a));
len=0;
do
{
a[len++]=v%mod;
v/=mod;
}
while(v);
}
BigInt(char s[])
{
memset(a,0,sizeof(a));
int slen=strlen(s);
len=(slen-1)/mlen+1;
int index=0;
for(int i=slen-1;i>=0;i-=mlen)
{
int t=0;
int j=max(0,i-mlen+1);
while(j<=i)
{
t=t*10+s[j]-'0';
j++;
}
a[index++]=t;
}
}
BigInt operator +(const BigInt &b)
{
BigInt ret;
ret.len=max(len,b.len);
memset(ret.a,0,sizeof(ret.a));
for(int i=0;i0)ret.len++;
return ret;
}
BigInt operator *(const BigInt &b)
{
BigInt ret;
ret.len=len+b.len;
memset(ret.a,0,sizeof(ret.a));
for(int i=0;i1)ret.len--;
return ret;
}
void print()
{
printf("%d",a[len-1]);
for(int i=len-2;i>=0;i--)
printf("%d",a[i]);
}
void print2(int decn)
{
if(len=0;i--)
printf("%d",a[i]);
}
else if(decn==0)
{
for(int i=len-1;i>=0;i--)
printf("%d",a[i]);
}
else
{
for(int i=len-1;i>=decn;i--)
printf("%d",a[i]);
printf(".");
for(int i=decn-1;i>=0;i--)
printf("%d",a[i]);
}
}
};
int main()
{
//freopen("in.txt","r",stdin);
while(scanf("%lf%d",&m,&n)!=EOF)
{
int ten=1;
int cnt=0;
while(1)
{
double now=m*ten;
if(now-floor(now)
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[못 푼 문제] 백준 10989번sys.stdin.readline()을 사용하여 input의 시간을 줄였다. 또한 입력 가능한 수의 개수가 10,000,000개 이고 최대 입력 가능한 수가 10,000이기 때문에 모든 수를 입력 받아 리스트로 만들...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.