PTA-L1-046 整除光棍 (20 分)(C++写法)

最先想到的是暴力,但是数据给到了31的答案就已经很大了,但还是试了一下能拿15分,其实问题的本质还是除法我们去模拟这个除法的过程

注意:遇到不够怎么办例如303➗101这个0怎么去表示,这里想到的是特判,对于前i位能除以x

的数做特判,因为第一位肯定不会位0,这个特判是181这个位置比x小填0。最后一位即y能够整除x即y%x==0。

#include<iostream>
using namespace std;
int main()
{
    int x,y=0,cnt,op=0,i;
	cin>>x;
    for( i=1;;i++)                     //for循环模拟的是位数 
	{
		y=y*10+1;
		if(y>=x)                       //直到能除才会输出 
		{
			op=1;
			cout<<y/x; 
		}
		else if(op==1) printf("0");    //如果太小此位填零 
		y=y%x;
		if(y==0) break;	               //模拟了除法 
	}
	cout<<' '<<i;
	return 0;
}

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值