c++判断正整数n是否同时含有奇数和偶数

本题目要求读入1个正整数n,判断正整数n是否同时含有奇数字和偶数字。
输入格式:

输入一个正整数n。

输出格式:

输出此正整数,并输出YES(表示同时含有)或NO(表示不同时含有)。

输入样例:

123
结尾无空行
输出样例:

123 YES
结尾无空行

```

#include
using namespace std;
int main()
{
int n,i,b=0,c=0;
cin>>n;
cout<<n;
i=n;
for(i=n;i>0;)
{
if(i%2 == 0)
c++;
else
b++;
n=n/10;
}
if(b*c == 0)
printf(" NO");
else
printf(" YES");
return 0;
}

```我的代码显示允许超时,我哪错了?

#include<iostream>
using namespace std;
int main() {
    int n, i, b = 0, c = 0;
    cin >> n;
    cout << n;
    i = n;
    while(i != 0) {
        if(i % 10 % 2 == 0) {
            b = 1;
        } else {
            c = 1;
        }
        i/=10;
    }
    if(b * c == 0)
        printf(" NO");
    else
        printf(" YES");
    return 0;
}