NC230834. 翻硬币
描述
输入描述
输入有两行,第一行包含一个整数 ,表示桌面上硬币个数。
第二行一个字符串表示我们想要的硬币状态朝上的情况,1代表正面朝上,0代表背面朝上。
输出描述
输出一个整数,表示最少操作次数。
示例1
输入:
3 101
输出:
1
示例2
输入:
3 010
输出:
2
pypy3 解法, 执行用时: 90ms, 内存消耗: 52252K, 提交时间: 2022-10-19 20:21:15
n = int(input()) s = input() ans = 0 if int(s[0]) == 0: ans = 1 for i in range(1,len(s)): if s[i] == s[i-1]: continue if int(s[i]) == 0: ans += 1 print(ans)
C 解法, 执行用时: 24ms, 内存消耗: 336K, 提交时间: 2021-11-21 15:43:50
#include<stdio.h> int main() { long n,m=0,i,x1=1,x2; scanf("%ld",&n); for(i=0;i<n;i++) { scanf("%1ld",&x2); if(x1&&x2==0) m++; x1=x2; } printf("%ld",m); }
Python3 解法, 执行用时: 144ms, 内存消耗: 5040K, 提交时间: 2022-11-08 19:36:15
n = int(input()) s1 = input() s2 = '' s2 += s1[0] k = 1 while k < n: if s1[k] != s1[k-1]: s2 += s1[k] k += 1 a = s2.count('0') print(a)
C++ 解法, 执行用时: 24ms, 内存消耗: 416K, 提交时间: 2021-11-29 20:54:49
#include<iostream> using namespace std; long n,m=0,a=1,b; int main() { for(cin>>n; n--;) { scanf("%1ld",&b); if(a&b==0) m++; a=b; } cout<<m; }