C Code:
#include <stdio.h> #include <string.h> #include <limits.h> /* For ULONG_MAX Definition */ int isFreeNine(unsigned long ulNumber); int main(int argc, char* argv[]) { unsigned long ulNumber; unsigned long ulNumNine = 0; unsigned long ulNumFreeNine = 0; unsigned long ulNumX; for(ulNumber = 1, ulNumX = 0; ulNumber <= ULONG_MAX && ulNumX < 13; ulNumber++) { if(isFreeNine(ulNumber) == 1) ulNumFreeNine++; else ulNumNine++; if(ulNumNine == ulNumFreeNine) { ulNumX++; printf("X[%lu] = %lu\n", ulNumX , ulNumber ); } } return 0; } int isFreeNine(unsigned long ulNumber) { char szNumber[10+1]; int iIdx; sprintf(szNumber , "%lu", ulNumber ); for(iIdx = strlen(szNumber )-1; iIdx >= 0; iIdx --) { if(szNumber[iIdx] == '9') return 0; } return 1; }
สำหรับฟังก์ชัน isFreeNine เขียนตามที่คุณ warut แนะนำมาจะเป็นดังนี้
C Code:
int isFreeNine(unsigned long ulNumber) { while(ulNumber > 0) { if(ulNumber%10 == 9) return 0; else ulNumber/=10; } return 1; }
มีใครเคยทดลองเปลี่ยนจากเลข 9-free number เป็น เลขอื่นไหม เช่น 0-8 free number โดยหลักความเท่าเทียมกัน แล้วมันน่าจะกระจายตัวใกล้เคียงกัน แต่มันกลับไม่เป็นเช่นนั้น
ตัวอย่างผลลัพธ์ที่ได้ (อาจจะได้มากกว่านี้ เพราะผมให้เวลาในการรันโปรแกรมไม่นานนัก)
0-free number
X[1] = 10761678
X[2] = 14958584
X[3] = 14960718
X[4] = 14961734
X[5] = 15013206
X[6] = 15588832
X[7] = 15590574
X[8] = 15591958
X[9] = 15591960
X[10] = 15592032
X[11] = 15592228
X[12] = 15592230
X[13] = 15603696
X[14] = 15633494
X[15] = 15633504
X[16] = 15633516
X[17] = 16076088
X[18] = 16263742
X[19] = 20327616
1-free number
X[1] = 2
X[2] = 16
X[3] = 24
X[4] = 160
X[5] = 270
X[6] = 272
X[7] = 1456
X[8] = 3398
X[9] = 3418
X[10] = 3420
X[11] = 3422
X[12] = 13120
X[13] = 44686
X[14] = 118096
X[15] = 674934
X[16] = 1062880
2-free number
X[1] = 2
X[2] = 2914
X[3] = 3150
X[4] = 3152
X[5] = 3238
X[6] = 3398
X[7] = 26242
X[8] = 41558
X[9] = 42280
X[10] = 44686
X[11] = 236194
X[12] = 671784
X[13] = 672136
X[14] = 674910
X[15] = 674912
X[16] = 674926
X[17] = 674934
X[18] = 1299076
X[19] = 1305158
X[20] = 1305232
X[21] = 1305406
X[22] = 1325320
X[23] = 1346694
X[24] = 2125762
3-free number
X[1] = 39364
X[2] = 41288
X[3] = 41308
X[4] = 41558
X[5] = 43738
X[6] = 44686
X[7] = 354292
X[8] = 671782
X[9] = 671784
X[10] = 673594
X[11] = 674910
X[12] = 3188644
4-free number
X[1] = 472390
X[2] = 630226
X[3] = 642976
X[4] = 671782
X[5] = 671784
X[6] = 4251526
5-free number
X[1] = 590488
X[2] = 630224
X[3] = 630226
X[4] = 656098
X[5] = 671782
X[6] = 5314408
6-free number
X[1] = 6377290
7-free number
X[1] = 7440172
X[2] = 15633516
X[3] = 15633518
X[4] = 15707032
X[5] = 16264012
X[6] = 16271278
X[7] = 16305300
X[8] = 16307728
X[9] = 16308426
X[10] = 16308428
X[11] = 16769914
X[12] = 16935524
X[13] = 16937584
X[14] = 16938652
X[15] = 16938718
X[16] = 16938922
X[17] = 16979866
X[18] = 16980210
X[19] = 17006110
8-free number
X[1] = 8503054
X[2] = 15633516
X[3] = 15633518
X[4] = 15825130
X[5] = 16263742
X[6] = 16263826
X[7] = 16264012
X[8] = 16284400
X[9] = 16305276
X[10] = 16305278
X[11] = 16305280
X[12] = 16305300
X[13] = 16888012
X[14] = 16935524
X[15] = 18068992
9-free number
X[1] = 9565936
X[2] = 15588832
X[3] = 15588934
X[4] = 15633516
X[5] = 15943228
X[6] = 16263742
X[7] = 16263988
X[8] = 16264012
X[9] = 16297522
X[10] = 16305276
X[11] = 16305298
X[12] = 16305300
X[13] = 19131874
__________________
The difference between school and life?
In school, you're taught a lesson and then given a test.
In life, you're given a test that teaches you a lesson.
25 มีนาคม 2007 14:25 : ข้อความนี้ถูกแก้ไขแล้ว 1 ครั้ง, ครั้งล่าสุดโดยคุณ TOP
|