fork(1) download
  1. #include <stdio.h>
  2.  
  3. #define DIGITS 50 // 必要な桁数 (仮に50桁分の計算を行う)
  4. #define BASE 10000000 // 7桁で分割する
  5. #define WIDTH 48 // 3の99乗が48桁なので、それに合わせて幅を指定
  6.  
  7. void power3(unsigned long result[]);
  8. void print_result(unsigned long result[]);
  9.  
  10. int main() {
  11. unsigned long result[DIGITS] = {0}; // 各要素に初期値を設定
  12. result[0] = 1; // 3の0乗 = 1 を初期値として設定
  13.  
  14. for (int i = 1; i <= 99; i++) {
  15. power3(result); // 3倍を繰り返して累乗計算
  16. printf("3の%2d乗: ", i);
  17. print_result(result); // 計算結果を右詰めで表示
  18. }
  19.  
  20. return 0;
  21. }
  22.  
  23. // 3の累乗を計算してresultに格納する関数
  24. void power3(unsigned long result[]) {
  25. unsigned long carry = 0; // 繰り上がりを保持する変数
  26. for (int i = 0; i < DIGITS; i++) {
  27. unsigned long temp = result[i] * 3 + carry;
  28. result[i] = temp % BASE; // 現在の桁に7桁以内の値を格納
  29. carry = temp / BASE; // 繰り上がり分を次の桁に回す
  30. }
  31. }
  32.  
  33. // resultの中身を表示する関数
  34. void print_result(unsigned long result[]) {
  35. int start = DIGITS - 1;
  36.  
  37. // 上位のゼロをスキップする
  38. while (start > 0 && result[start] == 0) {
  39. start--;
  40. }
  41.  
  42. // 最上位の桁を表示(ゼロ埋めしない)
  43. printf("%lu", result[start]);
  44.  
  45. // 残りの桁をゼロ埋めして表示
  46. for (int i = start - 1; i >= 0; i--) {
  47. printf("%07lu", result[i]); // 7桁で表示
  48. }
  49.  
  50. // 表示した結果を幅に合わせて右詰めにする
  51. int printed_length = 0;
  52. printed_length += printf("%lu", result[start]); // 最上位桁をカウント
  53. for (int i = start - 1; i >= 0; i--) {
  54. printed_length += printf("%07lu", result[i]); // 残りの桁をカウント
  55. }
  56.  
  57. // 必要に応じてスペースを追加して右詰めを実現
  58. for (int i = printed_length; i < WIDTH; i++) {
  59. printf(" ");
  60. }
  61.  
  62. printf("\n");
  63. }
  64.  
  65.  
Success #stdin #stdout 0s 5284KB
stdin
Standard input is empty
stdout
3の 1乗: 33                                               
3の 2乗: 99                                               
3の 3乗: 2727                                              
3の 4乗: 8181                                              
3の 5乗: 243243                                             
3の 6乗: 729729                                             
3の 7乗: 21872187                                            
3の 8乗: 65616561                                            
3の 9乗: 1968319683                                           
3の10乗: 5904959049                                           
3の11乗: 177147177147                                          
3の12乗: 531441531441                                          
3の13乗: 15943231594323                                         
3の14乗: 47829694782969                                         
3の15乗: 1434890714348907                                        
3の16乗: 4304672143046721                                        
3の17乗: 129140163129140163                                       
3の18乗: 387420489387420489                                       
3の19乗: 11622614671162261467                                      
3の20乗: 34867844013486784401                                      
3の21乗: 1046035320310460353203                                     
3の22乗: 3138105960931381059609                                     
3の23乗: 9414317882794143178827                                     
3の24乗: 282429536481282429536481                                    
3の25乗: 847288609443847288609443                                    
3の26乗: 25418658283292541865828329                                   
3の27乗: 76255974849877625597484987                                   
3の28乗: 2287679245496122876792454961                                  
3の29乗: 6863037736488368630377364883                                  
3の30乗: 205891132094649205891132094649                                 
3の31乗: 617673396283947617673396283947                                 
3の32乗: 18530201888518411853020188851841                                
3の33乗: 55590605665555235559060566555523                                
3の34乗: 1667718169966656916677181699666569                               
3の35乗: 5003154509899970750031545098999707                               
3の36乗: 150094635296999121150094635296999121                              
3の37乗: 450283905890997363450283905890997363                              
3の38乗: 13508517176729920891350851717672992089                             
3の39乗: 40525551530189762674052555153018976267                             
3の40乗: 1215766545905692880112157665459056928801                            
3の41乗: 3647299637717078640336472996377170786403                            
3の42乗: 109418989131512359209109418989131512359209                           
3の43乗: 328256967394537077627328256967394537077627                           
3の44乗: 984770902183611232881984770902183611232881                           
3の45乗: 29543127065508336986432954312706550833698643                          
3の46乗: 88629381196525010959298862938119652501095929                          
3の47乗: 2658881435895750328778726588814358957503287787                         
3の48乗: 7976644307687250986336179766443076872509863361                         
3の49乗: 239299329230617529590083239299329230617529590083                        
3の50乗: 717897987691852588770249717897987691852588770249                        
3の51乗: 21536939630755577663107472153693963075557766310747                       
3の52乗: 64610818892266732989322416461081889226673298932241                       
3の53乗: 1938324566768001989679672319383245667680019896796723                      
3の54乗: 5814973700304005969039016958149737003040059690390169                      
3の55乗: 174449211009120179071170507174449211009120179071170507                     
3の56乗: 523347633027360537213511521523347633027360537213511521                     
3の57乗: 15700428990820816116405345631570042899082081611640534563                    
3の58乗: 47101286972462448349216036894710128697246244834921603689                    
3の59乗: 1413038609173873450476481106714130386091738734504764811067                   
3の60乗: 4239115827521620351429443320142391158275216203514294433201                   
3の61乗: 127173474825648610542883299603127173474825648610542883299603                  
3の62乗: 381520424476945831628649898809381520424476945831628649898809                  
3の63乗: 11445612734308374948859496964271144561273430837494885949696427                 
3の64乗: 34336838202925124846578490892813433683820292512484657849089281                 
3の65乗: 1030105146087753745397354726784310301051460877537453973547267843                
3の66乗: 3090315438263261236192064180352930903154382632612361920641803529                
3の67乗: 9270946314789783708576192541058792709463147897837085761925410587                
3の68乗: 278128389443693511257285776231761278128389443693511257285776231761               
3の69乗: 834385168331080533771857328695283834385168331080533771857328695283               
3の70乗: 25031555049932416013155719860858492503155504993241601315571986085849              
3の71乗: 75094665149797248039467159582575477509466514979724803946715958257547              
3の72乗: 2252839954493917441184014787477264122528399544939174411840147874772641             
3の73乗: 6758519863481752323552044362431792367585198634817523235520443624317923             
3の74乗: 202755595904452569706561330872953769202755595904452569706561330872953769            
3の75乗: 608266787713357709119683992618861307608266787713357709119683992618861307            
3の76乗: 18248003631400731273590519778565839211824800363140073127359051977856583921           
3の77乗: 54744010894202193820771559335697517635474401089420219382077155933569751763           
3の78乗: 1642320326826065814623146780070925528916423203268260658146231467800709255289          
3の79乗: 4926960980478197443869440340212776586749269609804781974438694403402127765867          
3の80乗: 147808829414345923316083210206383297601147808829414345923316083210206383297601         
3の81乗: 443426488243037769948249630619149892803443426488243037769948249630619149892803         
3の82乗: 13302794647291133098447488918574496784091330279464729113309844748891857449678409        
3の83乗: 39908383941873399295342466755723490352273990838394187339929534246675572349035227        
3の84乗: 1197251518256201978860274002671704710568111972515182562019788602740026717047105681       
3の85乗: 3591754554768605936580822008015114131704335917545547686059365808220080151141317043       
3の86乗: 107752636643058178097424660240453423951129107752636643058178097424660240453423951129      
3の87乗: 323257909929174534292273980721360271853387323257909929174534292273980721360271853387      
3の88乗: 969773729787523602876821942164080815560161969773729787523602876821942164080815560161      
3の89乗: 29093211893625708086304658264922424466804832909321189362570808630465826492242446680483     
3の90乗: 87279635680877124258913974794767273400414498727963568087712425891397479476727340041449     
3の91乗: 2618389070426313727767419243843018202012434726183890704263137277674192438430182020124347    
3の92乗: 7855167211278941183302257731529054606037304178551672112789411833022577315290546060373041    
3の93乗: 235655016338368235499067731945871638181119123235655016338368235499067731945871638181119123   
3の94乗: 706965049015104706497203195837614914543357369706965049015104706497203195837614914543357369   
3の95乗: 21208951470453141194916095875128447436300721072120895147045314119491609587512844743630072107  
3の96乗: 63626854411359423584748287625385342308902163216362685441135942358474828762538534230890216321  
3の97乗: 1908805632340782707542448628761560269267064896319088056323407827075424486287615602692670648963 
3の98乗: 5726416897022348122627345886284680807801194688957264168970223481226273458862846808078011946889 
3の99乗: 171792506910670443678820376588540424234035840667171792506910670443678820376588540424234035840667