【已经解决 】计算客OJ第24题:函数规律,看看我哪里没考虑到
本帖最后由 chinalixs 于 2015-3-15 16:43 编辑题目是统计x的十进制表示中有多少个圈圈。
f(0)=1, f(1)=0, f(2)=0, f(3)=0, f(4)=0, f(5)=0, f(6)=1, f(7)=0, f(8)=2, f(9)=1。
是形象的,就好比2048,0是一个圈圈,8里有俩圈圈。输出3
样例输入2048
样例输出3我的代码提交到OJ后
:
我自己测试没发现错误,应该是有情况遗漏。
上代码#include <stdio.h>
int main()
{
long n,m=0,a;
scanf("%ld",&n);
while(n){
a=n % 10;
switch(a)
{
case 0:m++;break;
case 6:m++;break;
case 8:m+=2;break;
case 9:m++;break;
default:break;
}
n /= 10;
}
printf("%ld",m);
return 0;
} 本帖最后由 醉空流澈 于 2015-3-14 13:06 编辑
题目说了,读入一个x(1≤x≤10的1000次方),所以最后你不用判断n==0,再说,加上这个,跳出while循环时,n=0,所以m又变成1了。
删掉后,测试。。
10的1000次方,这数太大了,应该就是因为这个原因,所以标准答案为0的时候你却得出了3。
所以,用字符串吧。
下面第一个源码是计蒜客那道题里的讨论里copy来的,改了下。
第二个是C++语言,我觉得比第一个直观点。
#include <stdio.h>
int main()
{
char str = {0};
char *p;
int sum = 0;
scanf("%s", str);
p = str;
do{
if(*p == '6' || *p == '9' || *p == '0')
sum += 1;
if(*p == '8')
sum += 2;
}while(*p++ != '\0');
printf("%d\n", sum);
return 0;
}
#include <iostream>
#include <string>
using namespace std;
int main()
{
int sum = 0, i=0;
string str;
cin >> str;
while (i < str.size())
{
if (str=='0' || str=='6' || str=='9')
{
++sum;
}
if (str=='8')
{
sum += 2;
}
++i;
}
cout << sum << endl;
return 0;
} 本帖最后由 chinalixs 于 2015-3-15 16:43 编辑
以后还是得多用字符串。过了
#include <stdio.h>
int main()
{
int i,m=0;
char a;
scanf("%s",&a);
for(i=0;a!='\0';i++)
{
if(a=='0')m++;
if(a=='6')m++;
if(a=='8')m+=2;
if(a=='9')m++;
}
printf("%d",m);
return 0;
}
@homer @醉空流澈 来找茬啦 应该是有考虑不周全的 ubuntu 发表于 2015-3-13 17:26
算出来3标准是0?不科学啊,会不会出现0000这样的奇葩数字?
另外,如果数据给个0的话,应该是1个圈的,但 ...
对对对,输入0输出1我就没考虑到。
然后我就找不到错误了。应该不会000吧。那不是逼我用字符型么。我刚入门都不会啊
pcwps 发表于 2015-3-13 21:35
基本原则塔顶地基本原则塔顶地 基本原则塔顶地
新申请号还水,呵呵 ubuntu 发表于 2015-3-13 21:20
那就不知道了,没有测评数据么?
程序算出3但是答案是0,实在想不出什么情况了。
这个OJ 不提供输入数据,不知兄台有没有好的OJ推荐 醉空流澈 发表于 2015-3-14 13:05
题目说了,读入一个x(1≤x≤10的1000次方),所以最后你不用判断n==0,再说,加上这个,跳出while循环时,n= ...
大神,你计算客得做了多少了!你觉得有用吗? 汽水 发表于 2015-3-15 00:50
大神,你计算客得做了多少了!你觉得有用吗?
=_= 我是想做,不过没时间。每次楼主提问,我就去看下那道题而已。
我个人不喜欢算法,所以对ACM这些也没兴趣。 醉空流澈 发表于 2015-3-14 13:05
题目说了,读入一个x(1≤x≤10的1000次方),所以最后你不用判断n==0,再说,加上这个,跳出while循环时,n= ...
我正是因为不会用字符数组才只能用int。这下就跟你学到了。。。你做的真多啊,这些都是你做的笔记吗?
页:
[1]
2