列表

详情


NC215147. 小西和数字转换

描述

小西遇到了这样一个看起来很简单的问题:

给定一个位的没有前导0的(就是指从1开始)只由0或1组成的十进制数字,每次可以将这个数字任意一位从0变成1,或者从1变成0。

现在给出,小西希望将这个数字变成模的结果为,即这个数字除以,余数为

请问达成这个目的最少需要操作多少次。

输入描述

第一行输入一行三个整数
第二行输入一个长度为的只由0和1组成的字符串表示这个数字的初始状态


输出描述

输出一行一个整数表示答案

示例1

输入:

11 5 2
11010100101

输出:

1

示例2

输入:

11 5 1
11010100101

输出:

3

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

C(clang11) 解法, 执行用时: 6ms, 内存消耗: 624K, 提交时间: 2020-12-21 19:29:28

#include<stdio.h>
int main()
{
	int n,x,y,i,j;
	char a[200000];
	scanf("%d%d%d\n",&n,&x,&y);
	int c=0;
	gets(a);
	for(i=n-x;i<n;i++)
	{
		if(a[i]=='1'&&i!=n-y-1) c++;
	}
	if(a[n-y-1]=='0') c++;
	printf("%d",c);
	return 0;
 } 

C++(clang++11) 解法, 执行用时: 6ms, 内存消耗: 504K, 提交时间: 2020-12-19 15:27:13

#include<stdio.h>
int n,i,x,y,s=0;
char a[300001];
int main()
{
	scanf("%d%d%d\n",&n,&x,&y);
	scanf("%s",a);
	for(i=n-1;i>=n-x;i--)
	{
		if(a[i]=='1')s++;
	}
	if(a[n-y-1]=='0')s++;
	else s--;
	printf("%d",s);
	return 0;
}

Python3 解法, 执行用时: 66ms, 内存消耗: 7100K, 提交时间: 2021-11-25 13:03:26

n,x,y=map(int,input().split())
res=input()
if res[-y-1]=='1':
    cnt=res.count('1',n-x,)-1
else:
    cnt=res.count('1',n-x,)+1
print(cnt)
    
    
    


上一题