HDU1060

[url]http://acm.hdu.edu.cn/showproblem.php?pid=1060[/url]
此题输入数据比较大,在vc中已不能用long存下,要用_int64,关于它的介绍
int64 是有符号 64 位整数数据类型,也就是 C# 中的 long 和 SQL Server 中的 bigint,范围为 -2^63 (-9,223,372,036,854,775,808) 到 2^63-1 (9,223,372,036,854,775,807),存储空间占 8 字节。用于整数值可能超过 int 数据类型支持范围的情况。

c#中:

Int64 值类型表示值介于 -9,223,372,036,854,775,808 到 +9,223,372,036,854,775,807 之间的整数。

Int64 为比较此类型的实例、将实例的值转换为它的字符串表示形式以及将数字的字符串表示形式转换为此类型的实例提供了相应的方法。

警告 在 32 位 Intel 计算机上分配 64 位值不是原子操作;即该操作不是线程安全的。这意味着,如果两个人同时将一个值分配给一个静态 Int64 字段,则该字段的最终值是无法预测的。
有关格式规范代码如何控制值类型的字符串表示形式的信息,请参见格式化概述。此类型实现接口 IComparable、IFormattable 和 IConvertible。使用 Convert 类进行转换,而不是使用此类型的 IConvertible 显式接口成员实现。

C语言INT64 (VC中)
__int64 是一个关键字,用_int64 来可以指定一个64位的整型变量
__int8 nSmall; // 声明 8位 整数
__int16 nMedium; // 声明 16位 整数
__int32 nLarge; // 声明 32位 整数
__int64 nHuge; // 声明 64位 整数



long long是C99标准的C语言内置类型。需要符合C99的编译器

g++ /gcc中

long long a;
printf("%lld",a);

mingw32 中

__int64 a;

printf("%I64d",a);


思路大概是这样:
m=n^n,两遍分别对10取对数得 log10(m)=n*log10(n),得m=10^(n*log10(n)),由于10的任何整数次幂首位一定为1,所以m的首位只和n*log10(n)的小数部分有关
参考来自:[url]http://archive.cnblogs.com/a/1954800/[/url]

#include <stdio.h>
#include <math.h>

int main()
{
int t, i;
_int64 n;
scanf("%d", &t);
for(i = 0; i < t; i++)
{
scanf("%I64d", &n);
double x = n * log10((double)n);
x -=(_int64)x;
printf("%d\n", (int)pow(10.0, x));
}
return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值