PAT - 甲级 - 1005. Spell It Right (20)

测试点4没有通过,原因是题目要求N (≤10^100),而我用了long类型。下面讨论一下int,long类型所能表示数字的数量级。

这里是引用
unsigned int 0~4294967295
int 2147483648~2147483647
unsigned long 0~4294967295
long 2147483648~2147483647
long long的最大值:9223372036854775807
long long的最小值:-9223372036854775808
unsigned long long的最大值:1844674407370955161
__int64的最大值:9223372036854775807
__int64的最小值:-9223372036854775808
unsigned __int64的最大值:18446744073709551615

由此可见long long能表示的最大数字数量级不过10^18.因此本题可以用一个字符数组定义N;

#include
#include
using namespace std;
int main()
{
long n,i=0,sum=0;
cin>>n;
vector v,vec;
if(n==0)
cout<<“zero”;
while(n!=0)
{
v.push_back(n%10);
n/=10;
}
for(i=0;i<v.size();i++)
sum=sum+v[i]; //15
i=0;
while(sum!=0)
{
vec.push_back(sum%10); //51
sum/=10;
}
for(i=vec.size()-1;i>=0;i–)
{
switch(vec[i]){
case 0: cout<<“zero”;break;
case 1: cout<<“one”;break;
case 2: cout<<“two”;break;
case 3: cout<<“three”;break;
case 4: cout<<“four”;break;
case 5: cout<<“five”;break;
case 6: cout<<“six”;break;
case 7: cout<<“seven”;break;
case 8: cout<<“eight”;break;
case 9: cout<<“nine”;break;
default:break;
}
if(i!=0)
cout<<’ ';
}
return 0;
}

关于此代码总结:emplace_back虽然效率较push_back高,但是在某些编译器下显示emplace不存在。push_back()返回的是void,因此不能给变量赋值,通过vector变量调用该函数,可在该变量末尾插入给定参数。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值