a1329425635 @ 2024-10-20 15:55:30
刚学没多久,写的不是很好,细节也不是很好,但我思路没问题,我让ai帮我找错也找不到错在哪里,一直优化流程,但上传上去还是一直有两个报错,希望有大佬能帮我看看。 思路是对符合题目取值范围的m进行循环,然后通过m/i求得m的最高位数赋值给a,然后比较a是否为3,是就令sum+1,然后通过m-a*i去掉m的最高位数,然后继续循环,直到i=0.
#include <iostream>
#using namespace std;
int main()
{
long long m,k,a;
int sum = 0;
cin >> m;
cin >> k;
if (m <= 1000000000000000 && k <= 15 && k>1 && m>1)
{
long long i = 1000000000000000;
while ( i > 0)
{
if (i < m)
{
a = m / i;
if (a == 3)
{
sum++;
}
m = m - a * i;
}
i =i/ 10;
}
if (sum == k)
{
cout << "YES" << endl;
}
else
{
cout << "NO" << endl;
}
}
else
{
cout << "NO" << endl;
}
return 0;
}
by _lxc__ @ 2024-10-20 15:59:14
虽然我没看懂你写的代码,但我可以给你一份AC代码:
#include<bits/stdc++.h>
using namespace std;
int m,k,cnt=0;
int main(){
cin>>m>>k; //输入
while(m){ //拆位
if(m%10==3) ans++; //判断当前位是否为3
m/=10;
}
if(ans==k) cout<<"YES"; //输出
else cout<<"NO";
return 0;
}
by a1329425635 @ 2024-10-20 19:07:56
@_lxc___ 谢谢你,我已经向别人请教过正确代码来,发帖的原因主要是想要看看我到底是哪里出了问题。
by GAOXINGYI0703 @ 2024-10-21 14:01:16
@_lxc___请问代码编译过了吗,橙名大佬
by GAOXINGYI0703 @ 2024-10-21 14:02:07
@lxc___请问代码编译过了吗,橙名大佬
by yangyang1013 @ 2024-12-20 20:43:18
tt