中级天翼
3725 出现次数
经验值:0
题目描述 Description
输入一个正整数n(最大不超过long long),再输入一个整数m(m小于等于n的位数),求整数n中的从右到左的第m个数字,在整数n中的个数。
输入描述 Input Description
输入两个空格隔开的整数n 、m
输出描述 Output Description
输出第m个数在n中出现的次数。
样例输入 Sample Input
1223334444 5
样例输出 Sample Output
3
数据范围及提示 Data Size & Hint
从右往左第5个数是3,3在1223334444中出现了3次。
错误代码:
#include<iostream>
using namespace std;
int cnt=1,sum;
int main(){
long long a,b,c,d;
cin>>a>>b;
d=a;
while(a!=0){
a/=10;
cnt++;
if(cnt==b){
c=a%10;
}
}
while(d!=0){
if(d%10==c)
sum++;
d/=10;
}
cout<<sum;
return 0;
}
请各位大佬帮忙看一下
丁博扬在2021-01-25 08:24:48追加了内容
我总感觉我好像是从左往右数的
请问从右往左应该怎么写
丁博扬在2021-01-25 09:02:37追加了内容
顶
丁博扬在2021-01-25 09:05:18追加了内容
#include<iostream>
using namespace std;
int cnt=1,sum;
int main(){
long long a,b,c,d;
cin>>a>>b;
d=a;
while(a!=0){
cnt++;
if(cnt==b){
c=a%10;
}
a/=10;
}
while(d!=0){
if(d%10==c)
sum++;
d/=10;
}
cout<<sum;
return 0;
}
40分代码
丁博扬在2021-01-25 09:09:24追加了内容
顶
中级启示者
a/=10应该放在判断后面,不然会多算一位,你可以输出c试试
测试样例:34 1
你的代码如果输出c是3
汪恺恒在2021-01-25 09:04:47追加了内容
while(n){
cnt++;
n/=10;
if(cnt==m){
pos=n%10;
}
}
之后不变
汪恺恒在2021-01-25 09:05:40追加了内容
发错了
while(n){
cnt++;
if(cnt==m){
pos=n%10;
}
n/=10;
}