- 10 Ağu 2019
- 985
- 16
TC adreslerinin bir algoritması var. Ona göre bir doğrulayıcı;
Kod:
[FONT=monospace][COLOR=#BC7A00]#include[/COLOR] [COLOR=#408080][I]<stdio.h>[/I][/COLOR][/FONT]
[FONT=monospace][COLOR=#BC7A00] #include[/COLOR] [COLOR=#408080][I]<math.h>[/I][/COLOR][/FONT]
[FONT=monospace] [COLOR=#B00040]unsigned[/COLOR] [COLOR=#B00040]long[/COLOR][/FONT]
[FONT=monospace] [COLOR=#0000FF]get_digit[/COLOR] ([COLOR=#B00040]unsigned[/COLOR] [COLOR=#B00040]long[/COLOR] num, [COLOR=#B00040]int[/COLOR] digit)[/FONT]
[FONT=monospace] {[/FONT]
[FONT=monospace] [COLOR=#B00040]int[/COLOR] digits [COLOR=#666666]=[/COLOR] ([COLOR=#B00040]int[/COLOR])(log10(num) [COLOR=#666666]+[/COLOR] [COLOR=#666666]1[/COLOR]);[/FONT]
[FONT=monospace] [COLOR=#008000][B]return[/B][/COLOR] ([COLOR=#B00040]unsigned[/COLOR] [COLOR=#B00040]long[/COLOR])(num[COLOR=#666666]/[/COLOR](pow([COLOR=#666666]10[/COLOR], digits [COLOR=#666666]-[/COLOR] digit)))[COLOR=#666666]%[/COLOR][COLOR=#666666]10[/COLOR];[/FONT]
[FONT=monospace] }[/FONT]
[FONT=monospace] [COLOR=#B00040]int[/COLOR][/FONT]
[FONT=monospace] [COLOR=#0000FF]verify_tc[/COLOR] ([COLOR=#B00040]unsigned[/COLOR] [COLOR=#B00040]long[/COLOR] tc)[/FONT]
[FONT=monospace] {[/FONT]
[FONT=monospace] [COLOR=#B00040]int[/COLOR] digits [COLOR=#666666]=[/COLOR] ([COLOR=#B00040]int[/COLOR])(log10(tc) [COLOR=#666666]+[/COLOR] [COLOR=#666666]1[/COLOR]);[/FONT]
[FONT=monospace] [COLOR=#008000][B]if[/B][/COLOR](digits [COLOR=#666666]!=[/COLOR] [COLOR=#666666]11[/COLOR]) [COLOR=#008000][B]return[/B][/COLOR] [COLOR=#666666]0[/COLOR];[/FONT]
[FONT=monospace] [COLOR=#B00040]int[/COLOR] odd [COLOR=#666666]=[/COLOR] [COLOR=#666666]0[/COLOR];[/FONT]
[FONT=monospace] [COLOR=#B00040]int[/COLOR] even [COLOR=#666666]=[/COLOR] [COLOR=#666666]0[/COLOR];[/FONT]
[FONT=monospace] [COLOR=#B00040]int[/COLOR] sum;[/FONT]
[FONT=monospace] [COLOR=#008000][B]for[/B][/COLOR] ([COLOR=#B00040]int[/COLOR] i [COLOR=#666666]=[/COLOR] [COLOR=#666666]1[/COLOR]; i [COLOR=#666666]<=[/COLOR] [COLOR=#666666]9[/COLOR]; [COLOR=#666666]++[/COLOR]i)[/FONT]
[FONT=monospace] {[/FONT]
[FONT=monospace] [COLOR=#008000][B]if[/B][/COLOR](i [COLOR=#666666]&[/COLOR] [COLOR=#666666]0x1[/COLOR]) odd [COLOR=#666666]+=[/COLOR] get_digit(tc, i);[/FONT]
[FONT=monospace] [COLOR=#008000][B]else[/B][/COLOR] even [COLOR=#666666]+=[/COLOR] get_digit(tc, i);[/FONT]
[FONT=monospace] }[/FONT]
[FONT=monospace] sum [COLOR=#666666]=[/COLOR] odd [COLOR=#666666]+[/COLOR] even [COLOR=#666666]+[/COLOR] get_digit(tc, [COLOR=#666666]10[/COLOR]);[/FONT]
[FONT=monospace] [COLOR=#008000][B]if[/B][/COLOR] ((odd[COLOR=#666666]*[/COLOR][COLOR=#666666]7[/COLOR][COLOR=#666666]-[/COLOR]even)[COLOR=#666666]%[/COLOR][COLOR=#666666]10[/COLOR] [COLOR=#666666]!=[/COLOR] get_digit(tc, [COLOR=#666666]10[/COLOR])) [COLOR=#008000][B]return[/B][/COLOR] [COLOR=#666666]0[/COLOR];[/FONT]
[FONT=monospace] [COLOR=#008000][B]if[/B][/COLOR](sum[COLOR=#666666]%[/COLOR][COLOR=#666666]10[/COLOR] [COLOR=#666666]!=[/COLOR] get_digit(tc, [COLOR=#666666]11[/COLOR])) [COLOR=#008000][B]return[/B][/COLOR] [COLOR=#666666]0[/COLOR];[/FONT]
[FONT=monospace] [COLOR=#008000][B]return[/B][/COLOR] [COLOR=#666666]1[/COLOR];[/FONT]
[FONT=monospace] }[/FONT]
[FONT=monospace] [COLOR=#B00040]int[/COLOR][/FONT]
[FONT=monospace] [COLOR=#0000FF]main[/COLOR] ([COLOR=#B00040]v0id[/COLOR])[/FONT]
[FONT=monospace] {[/FONT]
[FONT=monospace] printf([COLOR=#BA2121]"%d"[/COLOR], verify_tc([COLOR=#666666]10000000146[/COLOR]));[/FONT]
[FONT=monospace] [COLOR=#008000][B]return[/B][/COLOR] [COLOR=#666666]0[/COLOR];[/FONT]
[FONT=monospace] }[/FONT]