Here是问题陈述。
找到N位数中K个连续数字的最大乘积 号。
输入格式
第一行包含T,表示测试用例的数量 每个测试用例的第一行将包含两个整数N& K.
每个测试用例的第二行将包含一个N位整数。输出格式
为每个测试用例打印所需的答案。
约束
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> <div ng-app="app"> <div ng-controller="ctrl"> <div ng-repeat="item in items | findobj: findList"> {{item}} </div> <hr/> <div ng-repeat="item in items | findobj: findList2"> {{item}} </div> <hr/>{{usingservice}} </div> </div>
示例输入
1≤T≤100 1≤K≤7 K≤N≤1000
示例输出
2 10 5 3675356291 10 5 2709360626
这是我的代码
3150
0
我的输出输出错误,输出正确。简而言之,我的代码中存在一些错误,我无法找到它。我正在寻求帮助。
错误输出示例
INPUT
#include <stdio.h> int main() { int t; scanf("%d",&t); while(t--) { int n,k; scanf("%d%d",&n,&k); char a[n]; int b[n]; int i,j; long long int x=1; for(i=0;i<n;i++) scanf("%c",&a[i]); int index; long long int max=0; for(i=0;i<n;i++) b[i]=a[i]-'0'; for(i=0;i<n-k;i++) { x=1; for(j=i;j<i+k;j++) x*=b[j]; if(x>max) { max=x; index=i; } } printf("%lld\n",max); } return 0; }
输出
1 10 5 1111122222
答案 0 :(得分:2)
在扫描以下行中数字的'\n'
数字之前,您没有读取第一行末尾的n
。因此,for(i=0;i<n;i++) scanf("%c",&a[i]);
循环中读取的第一个字符不是数字,而是仍位于'\n'
缓冲区中的stdin
。
您应该将第一个scanf
更改为:
scanf("%d%d\n",&n,&k);
或使用fgets()