题目:
格式要求:
题解:
#include<iostream>
#include<vector>
using namespace std;
int main(){
//规律:从某一硬币连续翻转,翻到截止硬币 最后截止时,首尾翻转 中间硬币状态不变
//找出初始状态和目标状态不同的几段 每段长度为n 则该段翻转n-1次 求各段翻转之和
string initial_state;
string target_state;
cin>>initial_state;
cin>>target_state;
//状态长度
int len = initial_state.length();
//用一个数组记录不同的下标
vector<int> nums;
//比较
for(int i = 0;i<len;i++){
if(initial_state[i]!=target_state[i]){
//不等 记录
nums.push_back(i);
}
}
//奇数个不等必定无解
int sum = 0;
for(int i = 0;i<nums.size();i = i+2){
//所需步数刚好为下标之差
sum += nums[i+1]-nums[i];
}
cout<<sum;
return 0;
}