통계 1 - N의 1 개수 ------- 반복 시도
2224 단어 J#
<script>
//alert('0'.substr(1) === '');
function count_1_from_1_to_N(N, index) {
var first_char = N.substr(index,1);
var last_N = N.substr(index+1);
if (N == 0) {
return 0;
} else if (N < 0) {
N = N * -1
} else if (N < 10) {
return 1;
}
if (last_N === '') {
return 1;
}
if (first_char == 0) {
return 0;
}
//alert("first_char : " + first_char);
//alert("last : " + last_N);
var value = 1 + (first_char==1?(last_N-(-1)):0) + 1;
// alert(value);
//alert(first_char * sign((""+last_N).charAt(0)));
var count = 0;
var middle_count = 0;
var last_left_str = last_N.substr(0, last_N.length-1);
for (var i=0; i<last_left_str.length; i++) {
if (last_left_str.charAt(i) == '1') {
middle_count ++;
alert(last_left_str);
}
}
count = (N.length-index-1) * Math.pow(10, N.length-index-2) * first_char + sign(first_char-1)*Math.pow(10, N.length-index-1) + (first_char==1?(last_N-(-1))*(1+middle_count):0);// + first_char * sign(last_N.charAt(0));
//alert(count);
return count + count_1_from_1_to_N(last_N, index+1);
}
function sign(n) {
return n < 0 ? -1 : (n > 0 ? 1 : 0);
}
/*var N_arr = [1,3,9,10,11,12,13,14,15,16,17,18,19,20,21,22,30,31,32,40,41,42,50,51,60,61,70,71,80,81,90,91,100, 101,102,110,111,112, 1000, 10001, 10010, 10011,100112];
for (var i =0; i<N_arr.length; i++) {
//alert(N_arr[i]);
var count = count_1_from_1_to_N(""+N_arr[i], 0);
alert(N_arr[i] + " : " + count);
}
*/
var all_str = "";
for (var i =0; i<122; i++) {
//alert(N_arr[i]);
all_str = all_str + i;
var count_right = 0;
for (var j=0; j<all_str.length; j++) {
if (all_str.charAt(j) == '1') {
count_right ++;
}
}
var count = count_1_from_1_to_N(""+i, 0);
if (count != count_right) {
alert(i + " : " + count + " == " + count_right);
}
//alert(i + " : " + count + " == " + count_right);
}
</script>
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
JS 동적 추가 삭제 테이블텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.