Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
Re:网上找的代码,路过的看看吧,服了...In Reply To:网上找的代码,路过的看看吧,服了... Posted by:vortex101 at 2009-02-26 13:51:45 > #include <stdio.h> > int main() > { > int n,x; > while(scanf("%d",&n),n) > { > x=n&-n; > printf("%d\n",n+x+(n^n+x)/x/4); > } > } int n,x,y; while (scanf("%d",&n)&&n) { x=n&-n; n+=x; y=n&-n; n+=y/x/2-1; printf("%d\n",n); } 其实原理都是把n的最低位的1左移一位,如果它前面有a个连续的1,就会产生a次连续进位,相当于最后的结果少了a个1,那么把这a个1加到最后就行了 Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator