F.A.Q
Hand In Hand
Online Acmers
Problem Archive
Realtime Judge Status
Authors Ranklist
 
     C/C++/Java Exams     
ACM Steps
Go to Job
Contest LiveCast
ICPC@China
Best Coder beta
VIP | STD Contests
    DIY | Web-DIY beta
Author ID 
Password 
 Register new ID

Binary Addition

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)
Total Submission(s): 513    Accepted Submission(s): 181


Problem Description
你有两个无限长$01$串$S, T$,分别记作$S_0S_1\dots$和$T_0T_1\dots$。其中$S$和$T$从$n$位之后都是$0$,也就是当$i\geq n$,有$S_i=T_i=0$。

你可以对$S$串进行操作:

- 修改$S$串的某一位,从$0$变成$1$或者从$1$变成$0$。
- 将$S$当成二进制数加$1$,也就是记$s=\sum_{i\geq 0} S_i2^i$,将$S$变成$s+1$二进制表示的形式,其中低位在最前面。

问最少的步数将$S$变成$T$。
 

Input
第一行一个正整数$T(1\leq T\leq 10^4)$表示数据组数。

对于每组数据,第一行一个整数$n$,接下来两行长度为$n(1\leq n\leq 10^5)$的$01$串$S$和$T$,表示$S$和$T$的前$n$位。

保证$\sum n\leq 10^6$。
 

Output
对于每组数据,输出一个整数,表示步数。

 

Sample Input
3 5 11111 00000 5 10100 01010 5 00000 00001
 

Sample Output
2 3 1
 

Hint

第一组数据中,可以选择先加一变成 "000001",然后将S<sub>5</sub>变成 '0'。

第二组数据中,先加一变为 "01100",然后直接修改。

第三组数据中,直接修改。
 

Source
 

Statistic | Submit | Discuss | Note
Hangzhou Dianzi University Online Judge 3.0
Copyright © 2005-2024 HDU ACM Team. All Rights Reserved.
Designer & Developer : Wang Rongtao LinLe GaoJie GanLu
Total 0.000000(s) query 1, Server time : 2024-06-26 10:07:47, Gzip enabled