ערכתי לאחרונה בתאריך 23.01.17 בשעה 16:52 בברכה, -UC-
ב-c# פשוט הייתי הופך את המספר למחרוזת ואז חותך(split) לפי "1" ומחסר 1.
צריך רק לקחת בחשבון שעבור המחרוזת "1" זה לא יעבוד, אבל את זה אתה יכול לחשב מראש - אם N>10 אז ברור ש-1 מופיע שם, אז לא צריך לחשב עבורו. אתה אוטומטית יכול להתחיל לרוץ על הלולאה אחרי 10.
זו הכמות הופעות של האיבר. public int CountOnes(int N) { int totalOccurenceOfOnes = N > 1 ? 1 : 0; for (var curretnNumber = 10; curretnNumber < N; curretnNumber++) { string curretnNumberString = curretnNumber.ToString(); int currentOccurenceOfOnes = curretnNumberString.Split('1').Length - 1; if (currentOccurenceOfOnes > 0) { totalOccurenceOfOnes += currentOccurenceOfOnes; } } return totalOccurenceOfOnes; }
|