求到某一数,不含3或者8的数共有多少。可视为8进制,判断每一位与3、8的关系。
#include "iostream"
using namespace std;
int main()
{
char s[100];
while (cin >> s) {
if (s[0]== '0') break;
long long ans = 0;
for (int i = 0;s[i];++i) {
if (s[i] > '8') ans = ans*8 + s[i] - '0'-2;
if (s[i] < '8' && s[i] > '3') ans = ans*8 + s[i] - '0'- 1;
if (s[i] >= '1' && s[i] <= '2') ans = ans*8 + s[i] - '0';
if (s[i]=='0') ans *=8;
}
printf ("%s: %I64d\n",s,ans);
}
return 0;
}