4137A Counting Ones(Normal Mode).docVIP

  • 2
  • 0
  • 约小于1千字
  • 约 3页
  • 2017-02-08 发布于重庆
  • 举报
D. ? Counting Ones(Normal Mode) 一、需求分析 二、概要设计 ?O(?* log2?n) 从个位开始逐位计算出现1的次数,将每一位上的加起来就是总次数。 若该位为1,则受高位和低位的影响;为0只受高位的影响;其他情况下受高位影响和位数影响。 三、详细设计 #include stdio.h using namespace std; int CountOnes(int n) { int count=0; while(n/factor!=0) { high=n/(factor*10); low=n-(n/factor)*factor; cur=(n/factor)%10; switch(cur) { case 0: count+=high*factor; break; case 1: count+=high*factor+low+1; break; default: count+=high*factor+factor; } factor=factor*10; } return count; } int main() { int N; //cinN; scanf(%d, N); while(N--) { int n; //cinn; scanf(%d, n ); printf(%d\n, CountOnes(n) ); //cout endl; } return 0; } 四、调试分析 使用cpp的输入输出一直超时,只能全部改成c语言,时间复杂度N)O(lg n +1 ) 五、测试结果

文档评论(0)

1亿VIP精品文档

相关文档