列表

详情


NC230095. power

描述

读取一个01数组

再读入Q个查询

根据查询要求将结果输出至屏幕。

输入描述

第一行为一个正整数n,指明以下的数组长度为n

第二行01

第三行为一个正整数Q,指明以下的查询数为Q

第三行到第行表示Q个查询

每个查询输入一个整数

要求计算01串中,所有为1的索引到id的距离和

>索引iid的距离为abs(id-i)
>
>索引从1开始

输出描述

对每一个询问将答案单独一行输出到屏幕

示例1

输入:

5
10010
3
1
4
2

输出:

3
3
3

原站题解

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

C++ 解法, 执行用时: 6ms, 内存消耗: 460K, 提交时间: 2021-12-14 22:16:50

#include<bits/stdc++.h>
using namespace std;
int main(){
	int n,q,zf=0,sum=0;
	string a;
	cin>>n;
    cin>>a;
	cin>>q;
	while(q--){
		sum=0;
		cin>>zf;
		zf--;
		for(int i=0;i<n;i++){
			if(a[i]=='1') {
			sum+=abs(zf-i);}
		}
		cout<<sum<<endl;
	}
}

pypy3 解法, 执行用时: 159ms, 内存消耗: 26864K, 提交时间: 2021-12-12 14:23:37

n=int(input())
zo=str(input())

T=int(input())

for i in range(T):
    idn=int(input())
    m=0
    t=0
    for i in zo:
        t+=1
        if i=='1':
            m+=abs(idn-t)
    print(m)
        
        
    

Python3 解法, 执行用时: 242ms, 内存消耗: 4580K, 提交时间: 2022-04-28 16:56:43

ll=int(input())+1
l='0'+input()
for _ in range(int(input())):
    ans=0
    n=int(input())
    for x in range(1,ll):
        if l[x]=='1':
            ans+=abs(n-x)
    print(ans)

上一题