B-number

Description
A wqb-number, or B-number for short, is a non-negative integer whose decimal form contains the sub- string "13" and can be divided by 13. For example, 130 and 2613 are wqb-numbers, but 143 and 2639 are not. Your task is to calculate how many wqb-numbers from 1 to n for a given integer n.

Input
Process till EOF. In each line, there is one positive integer n(1 <= n <= 1000000000).

Output
Print each answer in a single line.

Sample Input
13
100
200
1000

Sample Output
1
1
2

2

题意:与“不要62”相反,即“要13”

#include<stdio.h>
#include<string.h>

bool flag;
int now, len;
int numb[30];                     //存储数字
int note[30][20][20];

int dfs(int now, bool flag, int left, int key){
    if(now == len){
        if(!left && key == 2) return 1;        //能被13整除,有13
        return 0;
    }
    if(flag == false && note[now][left][key] != -1) return note[now][left][key];
    int bound = 9;
    if(flag) bound = numb[now + 1];//bound = flag ? num[now + 1] : 9;         //如果当前位数到边界下一位数范围存在约束(0~numb[now + 1])否则范围无约束(即0~9)
    int ret = 0;
    for(int i = 0; i <= bound; i++){
        int lleft = left*10 + i;
        int k = 0;
        lleft %= 13;
        if(i == 1) k = 1;
        if(key == 1 && i == 3) k = 2;            //有13
        if(key == 2) k = 2;
        ret += dfs(now + 1, flag == true && i == bound, lleft, k);
    }
    if(flag == false) note[now][left][key] = ret;
    return ret;
}

int main(){
    int na, n;
    char a[30];
    while(~scanf("%d", &na)){
        sprintf(a, "%d", na);
        n = 0;
        len = strlen(a);
        for(int i = 0; i < len; i++) numb[i + 1] = a[i] - '0';
        memset(note, -1, sizeof(note));
        n = dfs(0, true, 0, 0);                //计算0~na之间的13的数的个数
        printf("%d\n", n);                        //sum即1~na之间有13的数的个数
    }
    return 0;
}



<think>我们参考用户的需求:在Vue项目中循环使用Element UI的el-input-number组件。结合提供的引用,我们可以总结以下几点关键信息: 1. 在表格中使用el-input-number组件(引用[2]展示了在el-table-column中使用) 2. 注意事件处理:el-input-number的@change事件(引用[2]使用了@change.native,但注意在Vue中,对于组件事件,通常使用@change,而.native用于监听原生事件,但el-input-number已经封装了change事件,所以直接使用@change即可) 3. 注意响应式问题:确保数据绑定的对象是响应式的(引用[5]指出,如果初始化时破坏了响应式,会导致视图不更新) 4. 关于输入延迟问题(引用[1])和去除数字输入框箭头(引用[3])以及事件触发问题(引用[4])可以作为补充注意事项。 具体实现步骤: 1. 在Vue组件的data中定义数组,数组中的每个对象代表一行数据,每个对象包含需要绑定的属性(如年龄、姓名、指标等)。 2. 在模板中使用v-for循环生成表格行(或者列表项),并在需要放置计数器的地方使用el-input-number组件。 3. 使用v-model绑定到当前循环项的对应属性(如scope.row.index,注意在表格中可以使用作用域插槽)。 4. 注意初始化数据时,要保证每个对象都有el-input-number绑定的属性,且初始值在min和max范围内(引用[5]的教训)。 5. 如果需要监听变化,可以在el-input-number上添加@change事件处理函数。 下面是一个示例代码,展示在表格中循环使用el-input-number: ```vue <template> <el-table :data="tableData" border style="width: 100%"> <el-table-column prop="name" label="姓名"></el-table-column> <el-table-column prop="age" label="年龄"></el-table-column> <el-table-column label="数量"> <template slot-scope="scope"> <el-input-number v-model="scope.row.quantity" :min="1" :max="10" @change="handleChange(scope.row)" ></el-input-number> </template> </el-table-column> </el-table> </template> <script> export default { data() { return { tableData: [ { name: '小王', age: 20, quantity: 1 }, { name: '小陈', age: 23, quantity: 1 }, { name: '小李', age: 21, quantity: 1 } ] } }, methods: { handleChange(row) { console.log('当前行数据变化:', row); // 这里可以执行一些操作,比如根据变化更新其他数据或发送请求 } } } </script> ``` 注意事项: 1. 响应式:在初始化tableData时,每个对象都有quantity属性,这样v-model绑定才能正常工作。 2. 事件处理:使用@change事件,当数量改变时触发。注意,事件处理函数中可以通过参数获取当前行的数据对象,方便操作。 3. 样式问题:如果想去掉数字输入框的上下箭头,可以参考引用[3]的样式,但注意在scoped样式中使用::v-deep(或/deep/)进行深度作用选择。 关于样式调整(去除箭头)的补充: 在组件的样式部分添加: ```css <style scoped> /* 深度选择器,用于修改子组件样式 */ ::v-deep .el-input-number .el-input__inner { -moz-appearance: textfield; } ::v-deep .el-input-number .el-input-number__decrease, ::v-deep .el-input-number .el-input-number__increase { display: none; } </style> ``` 或者,如果只想隐藏上下箭头按钮,但保留输入框类型为number的其他行为,可以使用上述样式。但注意,这样也会影响所有在该组件内的el-input-number,如果只想影响特定表格内的,可以给表格添加一个类名,然后通过嵌套选择器限定范围。 最后,关于事件延迟问题(引用[1]),如果在@input事件中需要获取最新的值,可以加一个延迟(如setTimeout)来确保获取到的是组件内部校验后的值。但本例中我们使用的是@change事件,它会在失去焦点或点击箭头改变数值时触发,一般不需要延迟。如果确实需要实时输入触发,可以使用@input事件并考虑延迟处理。 相关问题: 1. 在Vue中循环使用组件时,如何确保每个组件的v-model绑定正确且独立? 2. Element UI的el-input-number组件在表格中循环使用时,如何优化性能? 3. 如何自定义el-input-number组件的样式(例如调整大小、去除箭头等)?</think>### 在 Vue 中循环使用 el-input-number 组件 在 Vue 项目中循环使用 Element UI 的 `el-input-number` 组件时,需要注意 **数据响应式** 和 **事件绑定** 问题。以下是实现方法和注意事项: #### 实现步骤 1. **准备响应式数据** 在 data 中定义数组,每个对象包含计数器绑定的字段: ```javascript data() { return { items: [ { id: 1, name: '项目A', value: 1 }, { id: 2, name: '项目B', value: 3 }, { id: 3, name: '项目C', value: 5 } ] } } ``` 2. **模板循环渲染** 使用 `v-for` 循环渲染计数器: ```vue <div v-for="(item, index) in items" :key="item.id"> <span>{{ item.name }}</span> <el-input-number v-model="item.value" :min="1" :max="10" @change="handleChange(index, $event)" /> </div> ``` #### 关键注意事项 1. **响应式数据绑定** - 初始化时必须为每个对象设置计数器字段(如 `value`) - 避免直接重置整个数组导致响应式丢失[^5] ```javascript // ✅ 正确:保持数据结构不变 resetItems() { this.items.forEach(item => item.value = 1) } // ❌ 错误:破坏响应式 resetItems() { this.items = [] // 会导致绑定失效 } ``` 2. **事件处理** - 使用 `@change` 事件而非 `@input`(避免延迟问题[^1]) ```javascript methods: { handleChange(index, newValue) { console.log(`第${index}项值变为:`, newValue) // 可在此处调用API或处理业务逻辑 } } ``` 3. **样式定制(可选)** 如需隐藏数字输入框的箭头: ```css ::v-deep .el-input-number .el-input__inner { -moz-appearance: textfield; } ::v-deep .el-input-number .el-input-number__decrease, ::v-deep .el-input-number .el-input-number__increase { display: none; } ``` #### 完整示例 ```vue <template> <div> <div v-for="(item, index) in items" :key="item.id" class="item-row"> <span>{{ item.name }}</span> <el-input-number v-model="item.value" :min="0" :max="100" @change="handleChange(index, $event)" /> </div> </div> </template> <script> export default { data() { return { items: [ { id: 1, name: '组件A', value: 10 }, { id: 2, name: '组件B', value: 20 }, { id: 3, name: '组件C', value: 30 } ] } }, methods: { handleChange(index, value) { console.log(`索引 ${index} 的新值: ${value}`) // 此处可添加业务逻辑 } } } </script> <style scoped> .item-row { margin-bottom: 15px; } </style> ``` #### 常见问题解决 1. **输入框不更新值** ⇒ 确保初始化数据包含所有字段(参考引用[^5]) 2. **事件未触发** ⇒ 使用 `@change` 而非原生事件(引用[^4]) 3. **输入延迟** ⇒ 避免在 `@input` 中直接操作DOM(引用[^1]) 4. **组件复用时的冲突** ⇒ 为每个计数器设置独立的 `key`(如 `:key="item.id"`)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值