Lightoj 1289 - LCM from 1 to n solution in Bangla


Problem Link: Lightoj 1289

āĻĒ্āϰāĻŦāϞেāĻŽāϟিāϤে āφāĻŽাāĻĻেāϰāĻ•ে āĻāĻ•āϟি āϏংāĻ–্āϝা  n āĻĻে⧟া āĻĨাāĻ•āĻŦে । āφāĻŽাāĻĻেāϰāĻ•ে ā§§ āĻšāϤে āϏেāχ āϏংāĻ–্āϝা āĻ…āĻŦāϧি āϞ.āϏা.āĻ—ু (LCM) āĻŦেāϰ āĻ•āϰāϤে āĻšāĻŦে। āĻĒ্āϰāĻŦāϞেāĻŽāϟি āϏāĻŽাāϧাāύ āĻ•āϰাāϰ āĻļুāϰুāϤেāχ āφāĻŽāϰা Constrains āĻāϰ āĻĻিāĻ•ে āϝāĻĻি āĻĻেāĻ–ি , āϏেāĻ–াāύে  n āĻšāϤে āĻĒাāϰে 10^8 । āφāϰ āϟেāϏ্āϟāĻ•েāϏেāϰ āϏংāĻ–্āϝা āĻšāϤে āĻĒাāϰে 10^4 । āϤো āφāĻŽāϰা āϝāĻĻি āϏাāϧাāϰāĻŖ āĻ­াāĻŦে āϞুāĻĒ āϚাāϞি⧟ে LCM āĻŦেāϰ āĻ•āϰāϤে āϝাāχ āϤাāĻšāϞে āφāĻŽāϰা TLE āĻ–ে⧟ে āϝাāĻŦো āϏেāϟা āύিāĻļ্āϚিāϤ । āϤো āĻāĻ–āύ āφāĻŽāϰা āĻ•ি āĻ•āϰāϤে āĻĒাāϰি ?? đŸ¤” 
āφāϚ্āĻ›া āĻāĻŦাāϰ āφāĻŽāϰা ⧍āϟো āϏংāĻ–্āϝাāϰ āĻŽāϧ্āϝে LCM āĻāĻŦং GCD āĻŦেāϰ āĻ•āϰা āĻļিāĻ–ি (āφāϏāϞে āφāĻŽāϰা āϏāĻŦাāχ āϏেāϟা āϜাāύি । 😜 
āϤো āĻŽāύে āĻ•āϰি āĻĻুāϟো āϏংāĻ–্āϝা a āĻāĻŦং b । āφāĻŽāϰা āϜাāύি āϝে , āϝেāĻ•োāύো āϏংāĻ–্āϝাāĻ•ে prime āϏংāĻ–্āϝাāϰ āĻ—ুāύাāĻ•াāϰে āĻĒ্āϰāĻ•াāĻļ āĻ•āϰা āϝা⧟ । 
āϤাāĻšāϞে āφāĻŽāϰা a āĻāĻŦং b  āĻ•ে āϞিāĻ–āϤে āĻĒাāϰি ,
a = p1^x1 * p2^x2 * ......
b = p1^y1 * p2^y2 * ......
āĻāĻ–āύ gcd_of_x_y = p1^min(x1,y1) * p2^min(x2,y2) * ......
āĻāĻŦং lcm_of_x_y = p1^max(x1,y1) * p2^max(x2,y2) * ......
āωāĻĻাāĻšāϰāĻŖ āĻšিāϏেāĻŦে ā§§ā§Ŧ āĻāĻŦং ⧍ā§Ļ āĻāϰ gcd āĻāĻŦং lcm āĻŦেāϰ āĻ•āϰি, 
Prime factorization of 20 = 2^2 * 5
Prime factorization of 14 = 2 * 7

gcd_of (20,14) = 2^min(1,2) * 5^min(1,0) * 7^min(0,1)
                        =2^1 * 5^0 * 7^0
    
                        =2
lcm_of(20,14)= 2^max(1,2) * 5^max(1,0) * 7^max(0,1)
                        =2^2 * 5^1 * 7^1
                        =4*5*7
                        =140

āϤো āφāĻŽāϰা āĻĻুāϟো āϏংāĻ–্āϝাāϰ āĻ•িāĻ­াāĻŦে lcm āĻāĻŦং gcd āĻŦেāϰ āĻ•āϰāϤে āĻšā§Ÿ āĻļিāĻ–ে āĻ—েāϞাāĻŽ। āĻāĻ–āύ āĻ…āύেāĻ• āĻ—ুāϞো āϏংāĻ–্āϝাāϰ āϜāύ্āϝāĻ“ āϏেāχāĻŽ āϟেāĻ•āύিāĻ• ।
a = p1^x1 * p2^x2 * ......
b = p1^y1 * p2^y2 * ......
c = p1^z1 * p2^z2 * ......
b = p1^m1 * p2^m2 * ......

gcd_of(a,b,c,d) = p1^min(x1,y1,z1,m1) * p2^min(x2,y2,z2,m2) * ......
lcm_of(a,b,c,d) = p1^max(x1,y1,z1,m1) * p2^max(x2,y2,z2,m2) * ......

āϤো āφāĻŽাāĻĻেāϰ āĻĒ্āϰāĻŦāϞেāĻŽāϟিāϤে āφāĻŽাāĻĻেāϰ lcm āĻŦেāϰ āĻ•āϰāϤে āĻšāĻŦে । āϏেāχāϜāύ্āϝ āφāĻŽাāĻĻেāϰ ā§§ āĻĨেāĻ•ে n āĻ…āĻŦāϧি āϏāĻŦ āϏংāĻ–্āϝাāϰ āĻĒ্āϰাāχāĻŽ āĻ—ুāϞোāϰ āĻŽ্āϝাāĻ•্āϏিāĻŽাāĻŽ āĻĒাāĻ“ā§Ÿাāϰ āϜাāύāϤে āĻĒাāϰāϞেāχ āφāĻŽāϰা āĻāϟা āĻŦেāϰ āĻ•āϰāϤে āĻĒাāϰāĻŦো ।āϏেāχāϜāύ্āϝ āϤো āφāĻŦাāϰ āϏāĻŦ āϏংāĻ–্āϝাāĻ—ুāϞোāĻ•ে prime factorize āĻ•āϰে āĻĻেāĻ–āϤে āĻšāĻŦে । āϏেāϟাāĻ“ āϤো āĻ…āύেāĻ• āϏāĻŽā§Ÿেāϰ āĻŦ্āϝাāĻĒাāϰ āĻŽাāύে TLE । āĻāĻ–āύ āĻ•ি āĻ•āϰা āϝা⧟ đŸ¤”।
āφāϚ্āĻ›া āφāĻŽāϰা n =10  āĻāϰ āϜāύ্āϝ āĻāĻ•āϟু āϚেāώ্āϟা āĻ•āϰে āĻĻেāĻ–ি āϤো , 
1 = 2^0 * 3^0 *...😜 
2 = 2^1
3 = 3^1
4 = 2^2
5 = 5^1
6 = 2*3
7 = 7^1
8 = 2^3
9 = 3^2
10 = 2*5

LCM_of(1,2,....,10)  = 2^3 * 3^2 * 5 * 7
                                = 2520
ā§§ā§Ļ āĻāϰ āĻĨেāĻ•ে āĻ›োāϟ āĻŦা āϏāĻŽাāύ āĻĒ্āϰাāχāĻŽ āφāĻ›ে  ā§Ē āϟি (⧍,ā§Š,ā§Ģ,ā§­)
āĻāĻŦাāϰ āϝāĻĻি lcm  āĻāϰ āĻĻিāĻ•ে āĻĨাāĻ•াāχ , lcm āĻ ⧍,ā§Š,ā§Ģ,ā§­ āĻŽিāύিāĻŽাāĻŽ ā§§ āĻŦাāϰ āĻ•āϰে āφāĻ›েāχ ।
āϤাāĻšāϞে āφāĻŽāϰা āĻŦāϞāϤে āĻĒাāϰি lcm āĻ āϤাāϰ āĻĨেāĻ•ে āĻ›োāϟ āĻŦা āϏāĻŽাāύ āĻĒ্āϰাāχāĻŽ āϏংāĻ–্āϝা āĻ—ুāϞো āĻāĻ•āĻŦাāϰ āĻ…āύ্āϤāϤ āĻĨাāĻ•āĻŦেāχ । āϏেāχāϜāύ্āϝ āφāĻŽāϰা āĻāϟাāĻ•ে  precalculate āĻ•āϰে āϰাāĻ–āϤে āĻĒাāϰি ।
āĻ•িāύ্āϤু  lcm_of (1,2,..10) āϤে āϤো 2^3 āĻāĻŦং 3^2 āφāĻ›ে । āφāĻŽāϰা āϏেāϟা āĻ•িāĻ­াāĻŦে āĻĒাāĻŦো đŸ¤”।
āφāϚ্āĻ›া āφāĻŽāϰা ā§§ā§Ļ āĻ•ে ⧍ āĻĻি⧟ে āĻ•ā§ŸāĻŦাāϰ āĻ­াāĻ— āĻ•āϰāϤে āĻĒাāϰি ??
ā§§ā§Ļ/⧍=ā§Ģ
ā§Ģ/⧍=⧍
⧍/⧍=⧧
āĻŽাāύে ā§§ā§Ļ āĻ•ে āφāĻŽāϰা ā§Š āĻŦাāϰ āĻ­াāĻ— āĻ•āϰāϤে āĻĒাāϰি ⧍ āĻĻি⧟ে । 
āĻāĻŦাāϰ ā§§ā§Ļ āĻ•ে ā§Š āĻĻি⧟ে āĻ­াāĻ— āĻ•ā§ŸāĻŦাāϰ āĻ­াāĻ— āĻ•āϰāϤে āĻĒাāϰি ।
ā§§ā§Ļ/ā§Š=ā§Š
ā§Š/ā§Š=ā§§
āϤাāĻšāϞে ā§§ā§Ļ āĻ•ে ā§Š āĻĻি⧟ে ⧍ āĻŦাāϰ āĻ­াāĻ— āĻ•āϰা āϝাāϚ্āĻ›ে । 
āφāĻŽāϰা āĻ•ি āĻāϰ āĻĒāϰেāϰ āĻĒ্āϰাāχāĻŽ āĻ—ুāϞো āĻĻি⧟ে āϚেāĻ• āĻ•āϰāĻŦো??
āύাāĻš , āĻ•āϰāĻŦো āύাāĻš। āĻ•াāϰāĻŖ āφāĻŽāϰা ā§§ā§Ļ āĻĨেāĻ•ে āĻ›োāϟ āĻŦা āϏāĻŽাāύ āĻĒ্āϰাāχāĻŽāĻ—ুāϞো āφāĻ—েāχ precalculate āĻ•āϰে āϰাāĻ–āĻŦো āφāϰ āϏেāĻ–াāύ āĻĨেāĻ•ে āĻŦ্āϝāĻŦāĻšাāϰ āĻ•āϰāĻŦো ।
āϤো āĻ•āϤ āĻ…āĻŦāϧি āĻĒ্āϰাāχāĻŽ āĻ—ুāϞো āĻĻি⧟ে āϚেāĻ• āĻ•āϰāĻŦো āϏেāϟা āĻ•āϤāĻŦাāϰ āĻ­াāĻ— āϝাāϚ্āĻ›ে??
āϏেāϟা āĻšāĻŦে sqrt(n) । āĻ•াāϰāĻŖ āĻāϰ āϚে⧟ে āĻŦ⧜ āĻ•োāύ āĻĒ্āϰাāχāĻŽেāϰ āĻĒাāĻ“ā§Ÿাāϰ ⧍ āĻšāϞেāχ āϏেāϟা n āĻĨেāĻ•ে āĻŦ⧜ āĻšā§Ÿে āϝাāĻŦে ।  
āĻāĻŦাāϰ āĻĻেāĻ–ি Precalculate  āĻ•āϰāĻ›ি āϟা āĻ•ি
āĻĒ্āϰāĻĨāĻŽেāχ āφāĻŽāϰা 10^8  āĻ…āĻŦāϧি āϏāĻŦ āĻĒ্āϰাāχāĻŽ āĻŦেāϰ āĻ•āϰে āύিāĻŦো ।
āϤাāϰāĻĒāϰ āĻāĻ•āϟা āĻ…্āϝাāϰেāϤে āĻĒ্āϰাāχāĻŽ āĻ—ুāϞোāĻ•ে āĻ—ুāύāĻ•াāϰে āϰাāĻ–āĻŦো , āϤাāĻšāϞে āĻĒ্āϰāϤিāϟি āĻĒ্āϰাāχāĻŽ āĻāĻ•āĻŦাāϰ āĻ•āϰে āĻ—ুāύাāĻ•াāϰে āĻĒে⧟ে āϝাāĻŦো।

    store[i]=store[i-1]*prime[i]; 
  
āϝেāĻšেāϤু āφāĻŽāϰা āĻāĻ•āĻŦাāϰ āĻ•āϰে āĻĒ্āϰাāχāĻŽ āϰেāĻ–ে āĻĻিāϚ্āĻ›ি , āϤাāχ āĻĒāϰে āϝāĻ–āύ āφāĻŦাāϰ sqrt(n)  āĻāϰ āφāĻ—েāϰ āĻĒ্āϰাāχāĻŽ āĻ—ুāϞো āĻĻি⧟ে āϚেāĻ• āĻ•āϰāĻŦো , āϤāĻ–āύ āĻāĻ•āĻŦাāϰ āĻ­াāĻ— āĻ•āϰে āύিāĻŦো । 
āĻĒ্āϰāĻŦāϞেāĻŽে āφāĻŽাāĻĻেāϰāĻ•ে  2^32  āĻĻি⧟ে mod  āĻ•āϰāϤে āĻŦāϞেāĻ›ে । āϏেāϟা āφāĻŽāϰা  unsigned int  āύিāϞে āĻ…āϟোāĻŽেāϟিāĻ• āĻšā§Ÿে āϝাāĻŦে । 
āφāĻļা āĻ•āϰি āĻĒ্āϰāĻŦāϞেāĻŽāϟি āĻāĻŦাāϰ āϏāĻŽাāϧাāύ āĻ•āϰāϤে āĻĒাāϰāĻŦো । 
āĻŦুāĻāϤে āĻĒাāϰāϞেāĻ“ āĻ•āĻŽেāύ্āϟ āĻ•āϰāϤে āĻĒাāϰেāύ , āĻŦুāĻāϤে āύা āĻĒাāϰāϞেāĻ“ āĻ•āĻŽেāύ্āϟ āĻ•āϰāϤে āĻĒাāϰেāύ āĻ•ি āĻŦুāĻেāύ āύি āϏেāϟা । 

'