interger 형의 배열을 두어서 각각 10억단위씩 저장하도록 한다.
반복문을 돌면서 arr 내 각 요소마다 2배를 해주고,
arr[i]가 10억을 넘어가면 그만큼을 arr[i+1]에 합산하는 식으로 n회 반복하면 된다.
#include <stdio.h> // 2의 n승 구하기 (int형 범위를 초과하여) int main() { int i; int j; int x; int tmp; int s[100]; for (i=99;i>=1;i--) s[i] = 0; s[0] = 1; printf("input x: "); scanf("%d",&x); for (i=1;i<=x;i++) {for (j=0;j<=99;j++) s[j] = s[j] * 2; for (j=1;j<=99;j++) { if (s[j-1] > 999999999) { tmp = s[j-1] / 1000000000; s[j-1] = s[j-1] % 1000000000; s[j] = s[j] + tmp; } } } for (i=99;i>=0;i--) { if (s[i] != 0) printf("%d",s[i]); } return 0; }
* 피시키드님에 의해서 게시물 이동되었습니다 (2024-04-26 18:49)