fork download
  1. #include <stdio.h>
  2.  
  3. #define MAX_DIGITS 100
  4.  
  5. void power3(unsigned long *result, size_t size) {
  6. for (size_t i = 1; i < size; i++) {
  7. *(result + i) = 0;
  8. }
  9. *result = 1; // 3^0 = 1
  10.  
  11. for (int power = 1; power <= 99; power++) {
  12. unsigned long carry = 0;
  13. for (size_t i = 0; i < size; i++) {
  14. unsigned long temp = *(result + i) * 3 + carry;
  15. *(result + i) = temp % 10000000; // 7桁の整数
  16. carry = temp / 10000000;
  17. }
  18. }
  19. }
  20.  
  21. void print_result(unsigned long *result, size_t size) {
  22. int start = size - 1;
  23. while (start > 0 && *(result + start) == 0) {
  24. start--;
  25. }
  26. for (int i = start; i >= 0; i--) {
  27. if (i == start) {
  28. printf("%lu", *(result + i));
  29. } else {
  30. printf("%07lu", *(result + i)); // 7桁のゼロ埋め
  31. }
  32. }
  33. printf("\n");
  34. }
  35.  
  36. int main() {
  37. unsigned long result[MAX_DIGITS];
  38. size_t size = sizeof(result) / sizeof(result[0]);
  39. power3(result, size);
  40. print_result(result, size);
  41. return 0;
  42. }
  43.  
Success #stdin #stdout 0s 5284KB
stdin
Standard input is empty
stdout
171792506910670443678820376588540424234035840667