一道有趣的题

奇怪的函数
描述

一天高数老师给出了一个奇怪的函数f(x),(x是一个正整数)如下:将x的十进制表示的所有数字从后往前写,然后去掉前导零。

例如,f(321)=123,f(120)=21,f(1000000)=1,f(111)=111。

让我们定义另一个函数g(x)=x/{f(f(x))} (x也是正整数),您的任务如下:

对于给定的正整数n,计算所有数字x中g(x)的不同值的个数 , 1\leq x \leq n1≤x≤n

输入

第一行包含一个整数t(1≤t≤100)t(1≤t≤100)测试用例的数量。

每个测试用例由一行组成,其中包含一个整数n(1 <=n <= 10^{100}此整数不带前导零。

输出

对于每个测试用例,打印一个整数表示函数g(x)的不同值的数目

输入样例 1

1
4

输出样例 1

1

思路:通过规律可得,g(x)不同值的数目代表的就是n的位数。

#include<stdio.h>
int main()
{
	int n;
	scanf("%d",&n);
  getchar();
	while(n--)
	{
		char str[1000];
      scanf("%s",str);
      int k=strlen(str);
		printf("%d\n",k);
	 } 
  return 0;
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值